1. 程式人生 > 其它 >python+requests介面自動化測試3--整理程式碼,重組框架

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"])