FBi*_*idu 6 python testing pytest
假设我有一个 HTTP URL 列表,例如
endpoints = ["e_1", "e_2", ..., "e_n"]
Run Code Online (Sandbox Code Playgroud)
我想运行n测试,每个端点一个。我怎样才能做到这一点?
一次测试所有端点的简单方法是
def test_urls():
for e in endpoints:
r = get(e)
assert r.status_code < 400
Run Code Online (Sandbox Code Playgroud)
或类似的东西。但正如您所看到的,这是针对所有n端点的一次测试,我希望比这更详细一些。
我尝试过使用类似的固定装置
@fixture
def endpoint():
for e in endpoints:
yield e
Run Code Online (Sandbox Code Playgroud)
但是,显然,Pytest 并不真正喜欢固定装置中的“多次产量”并返回yield_fixture function has more than one 'yield'错误
按照参数化夹具和测试函数中的示例,您可以将测试实现为:
import pytest
endpoints = ['e_1', 'e_2', ..., 'e_n']
@pytest.mark.parametrize('endpoint', endpoints)
def test_urls(endpoint):
r = get(endpoint)
assert r.status_code < 400
Run Code Online (Sandbox Code Playgroud)
这将运行test_urls n一次,每个端点一次:
test_spam::test_urls[e_1] PASSED
test_spam::test_urls[e_2] PASSED
...
test_spam::test_urls[e_n] PASSED
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3530 次 |
| 最近记录: |