Pytest 断言语法以及如何从 pytest 函数调用 yml 文件
Pytest assert syntax and how to call yml file from pytest function
这就是我编写单元测试代码的方式:
def test_valid_number():
check = requests.get("http://testing/validateNumber/021844223")
assert True
def test_invalid_number():
check = requests.get("http://testing/validateNumber/02188441")
assert False
我的问题是:
如何正确断言(使用 pytest)以检查 API 响应?
第一个功能是检查有效数字,它 return 结果:
{"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE",..... }
第二个功能是用预期的 return:
检查无效号码
{"header":[],"headercount":0,"offers":[]}
- 而不是手动编码 url 和学号。我如何在 YAML 中创建它以及如何在我的两个函数中调用 YAML 文件。
Pytest 提供了一个 fixture monkeypatch
你可以使用它
def test_valid_number(monkeypatch):
def patched_get():
return {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}
monkeypatch.setattr(requests, 'get', patched_get)
assert check == {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}
要读取 YAML 文件,您需要 PyYAML。使用 pip
.
安装
import yaml
with open("example.yml", "r") as f:
test_data = yaml.load(f)
def test_valid_number():
response = requests.get(test_data['url']).json()
assert response == test_data['expected']
YAML 文件如下所示:
url: "http://testing/validateNumber/021844223"
expected:
header:
-
STUDENTNUM: "P56219"
STUDENTNAME: "GOLDIE"
......
这就是我编写单元测试代码的方式:
def test_valid_number():
check = requests.get("http://testing/validateNumber/021844223")
assert True
def test_invalid_number():
check = requests.get("http://testing/validateNumber/02188441")
assert False
我的问题是:
如何正确断言(使用 pytest)以检查 API 响应? 第一个功能是检查有效数字,它 return 结果:
{"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE",..... }
第二个功能是用预期的 return:
检查无效号码 {"header":[],"headercount":0,"offers":[]}
- 而不是手动编码 url 和学号。我如何在 YAML 中创建它以及如何在我的两个函数中调用 YAML 文件。
Pytest 提供了一个 fixture monkeypatch
你可以使用它
def test_valid_number(monkeypatch):
def patched_get():
return {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}
monkeypatch.setattr(requests, 'get', patched_get)
assert check == {"header":[{"STUDENTNUM":"P56219","STUDENTNAME":"GOLDIE"}
要读取 YAML 文件,您需要 PyYAML。使用 pip
.
import yaml
with open("example.yml", "r") as f:
test_data = yaml.load(f)
def test_valid_number():
response = requests.get(test_data['url']).json()
assert response == test_data['expected']
YAML 文件如下所示:
url: "http://testing/validateNumber/021844223"
expected:
header:
-
STUDENTNUM: "P56219"
STUDENTNAME: "GOLDIE"
......