python+requests接口自动化测试3--整理代码,重组框架
1.工程目录:

common 存放公用方法
logs 保存日志文件
test_data 保存测试数据
testcases 存放测试用例文件
main 主方法
pytest.ini 配置文件
2.搭建框架
- 新建测试用例文件test_login.py和基本请求方法文件baseRequest.py
- 新建comm.py存放共用方法,如前文提到的get_nonce(),get_timestamp()等
import requests import json from random import randint import random import hashlib import time
class Comm(object): def get_nonce(self): """ 生成6位随机数 :return: 字符串 """ ret = "" for i in range(6): num = random.randint(0, 9) s = str(random(num) ret += s return ret def md5_sys(self, params): """ 加密 :param params: 需加密的字符串 :return: 加密后的字符串 """ md5_str = hashlib.md5(params.encode(encoding='utf-8')).hexdigest() return md5_str def get_timestamp(self): """ 获取时间戳 :return: """ return str(int(time.time() * 1000)) def get_sign(self, parameter,...): str_sign = ... ... md5_sign = self.md5_sys(str_sign) return md5_sign
- 封装getHeader方法
import pytest from common.baseRequest import BaseRequest from common.comm import Comm import json class GetHeader(object): com = Comm() def get_header(self, method, params, token, key): timestamp = self.com.get_timestamp() nonce = self.com.get_nonce() header = {} header['timestamp'] = timestamp header['nonce'] = nonce if token != "": sign = self.com.get_sign(params, ...) else: sign = self.com.get_sign(params, ...) header['sign'] = sign
header['Authorization'] = token
return header
if __name__ == '__main__': gh = GetHeader() pa = {"username": "admin", "password": "4297f44b13955235245b2497399d7a93"} re = gh.get_header("post", pa, "", "1232132") print(re)
- 修改测试用例
class Test_Login(object): def setup_class(self): self.key = "xxx" self.gh = GetHeader() self.header = {"Content-Type": "application/json", "client": "xx"} def teardown_class(self): print("测试用例执行结束") def test_userLogin_ok(self): url = "https://xxx/login/password" data = {"username": "admin", "password": "4297f44b13955235245b2497399d7a93"} gh = self.gh.get_header("post", data, "", self.key) head = dict(gh, **self.header) br = BaseRequest(url) re = br.sureMethod(head, "post", data) print(re) def test_userLogin_fail(self): url = "https://xxx/login/password" data = {"username": "admin11", "password": "4297f44b13955235245b2497399d7a93"} gh = self.gh.get_header("post", data, "", self.key) head = dict(gh, **self.header) br = BaseRequest(url) re = br.sureMethod(head, "post", data) print(re) if __name__ == '__main__': pytest.main(['-sv', "api.py"])

浙公网安备 33010602011771号