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

 

posted @ 2021-06-22 14:02  海浪。  阅读(143)  评论(0)    收藏  举报