框架作者没有对pytest格式的测试用例做一个参数化的官方demo,这里补充一下.
如果要对断言做关联参数化,框架本身是不支持的,需要改源码:这里-优化断言正则匹配
部分
只参数化请求报文内容的话,则不需要修改源码.
使用环境变量.env
-作用域: 整个项目
import sys
from pathlib import Path
import pytest
sys.path.insert(0, str(Path(__file__).parent.parent))
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
from httprunner import Parameters
class TestCaseBattle(HttpRunner):
config = (
Config("battle: login")
.base_url("http://xxx.xx.xx.225:12356")
.verify(False)
)
teststeps = [
Step(
RunRequest("post form data")
.with_variables(**{
"res":"please select One Equipment"})
.post("/login")
.with_data({
"username":"${ENV(username)}","password":"${ENV(password)}"}) #调用env变量
.validate()
.assert_equal("status_code", 200)
.assert_regex_match("body", "${res}")
),
]
if __name__ == "__main__":
TestCaseBattle().test_start()
在config使用variables关键字
和在step使用with_variables
定义变量
import sys
from pathlib import Path
import pytest
sys.path.insert(0, str(Path(__file__