在做测试的时候,公司可以有好几套测试环境。有测试环境,预发布环境。每个环境中服务器的ip地址不一样,但是路径,请求参数都是一样。我们写的自动化代码,应该可以在不同的环境下执行。
创建配置文件
config/BasicConfig.py
"""定义一些常用的配置"""class BasicConfig:SERVERURL = "http://49.233.108.117:28019/"# 上下游传参TOKEN = None
在myrequests.py 文件中发送的请求url 前缀都是用 配置文件的 SERVERURL。 修改myrequests.py 文件
添加
url = BasicConfig.SERVERURL+url
utils/myrequests.py
import requestsfrom config.BasicConfig import BasicConfigfrom utils.mylogger import loggerclass MyRequests:def __init__(self):self.logger = loggerdef do_requests(self, method, url, params=None, data=None, json=None, **kwargs):"""自定义请求 请求url,只需要传参 服务器ip地址之后的路径即可。:param method: 请求方法:param url: 请求的url:param params: get请求参数:param data: post请求参数:param json: post 请求参数:param kwargs: 其他参数:return:"""url = BasicConfig.SERVERURL+urlif method == 'get':# 添加日志self.logger.debug(f"发送get请求,请求地址:{url},请求参数: {params}")# 调用requests get 请求r = requests.get(url, params=params, **kwargs)# 添加日志self.logger.debug(f"服务器返回结果:{r.text}")return relif method == "post":self.logger.debug(f'发送post请求,请求地址:{url},请求数据:{json}, {data}')r = requests.post(url, data=data, json=json, **kwargs)self.logger.debug(f'服务器返回结果:{r.text}')return rif __name__ == '__main__':# 模拟发送请求req = MyRequests()req.do_requests(method='get', url="http://47.100.175.62:3000/api/v1/topics")
编写测试用例
testcases/test_ddt/test_register.py
"""测试注册的异常场景"""from utils.myrequests import MyRequestsmyreq = MyRequests()def test_register():url = "/api/v1/user/register"bodydata = {"loginName": "17088889999","password": "123456"}r = myreq.do_requests(method='post',url=url,json=bodydata)print(r.json())assert r.status_code == 200assert r.json()["message"] == "success"
执行代码测试用例
pytest -s -v testcases\test_ddt\test_register.py
能够基本跑通用例
