测试接口的时候,单接口除了要测试正常的业务场景,异常场景也要进行测试。
比如 登录接口。 除了要测试正常的登录,错误数据登录也要进行测试。
使用Postman,JMeter 工具来测试接口的时候,可以使用csv文件,将数据存放在CSV文件中。通过读取文件的方式来进行测试。
pytest 参数化
pytest单元测试框架内部已经集成 参数化的功能,在使用的时候只需要引用语法即可。
基本使用
https://docs.pytest.org/en/6.2.x/parametrize.html#parametrize
test_data.py
"""使用pytest的参数化功能进行单接口 多场景的测试测试登录接口"""import requestsimport pytest# 准备登录数据login_data = [("","123456"),("1321111","123456"),("13213331333",""),("",""),("13213331333","123456")]@pytest.mark.parametrize("username,passwd",login_data)def test_login(username,passwd):url = "http://49.233.108.117:28019/api/v1/user/login"body = {"loginName": username,"passwordMd5": passwd}# 发送请求r = requests.post(url,json=body)print(r.json())
执行。准备的数据共有5条,执行的时候会自动生成5条测试用例。
pytest test_data.py -s -v

添加断言
每条数据都对应一种测试情况,不同的数据返回的结果也不一样。针对不同的结果添加不同的断言。
将断言部分添加在测试数据中。
"""使用pytest的参数化功能进行单接口 多场景的测试测试登录接口"""import requestsimport pytest# 准备登录数据login_data = [("","123456",510,"登录名不能为空"),("1321111","123456",500,"请输入正确的手机号!"),("13213331333","",510,"密码不能为空"),("","",510,"密码不能为空"),("13213331333","123456",500,"登录失败!")]@pytest.mark.parametrize("username,passwd,excpet_code,excpet_msg",login_data)def test_login(username,passwd,excpet_code,excpet_msg):url = "http://49.233.108.117:28019/api/v1/user/login"body = {"loginName": username,"passwordMd5": passwd}# 发送请求r = requests.post(url,json=body)print(r.json())# 添加断言assert r.json()["resultCode"] == excpet_codeassert r.json()["message"] == excpet_msg
执行
pytest -s -v test_data.py
