python+requests介面自動化測試3--整理程式碼,重組框架
阿新 • • 發佈:2021-06-22
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 timeclass 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"])