当我们对测试用例进行参数化时,使用@pytest.mark.parametrize的ids参数自定义测试用例的标题,当标题中有中文时,控制台和测试报告中会出现Unicode编码问题,这看起来特别像乱码,我们想让中文正常展示出来,需要用到pytest框架的钩子函数pytest_collection_modifyitems。
先看问题:
# file_name: test_parametrize.py
import pytest
def return_user():
return [('lwjnicole', '12345'), ('nicole', '123111')]
class Test_D:
@pytest.mark.parametrize("username,password",
return_user(),
ids=[
"输入正确的用户名、密码,登录成功",
"输入错误的用户名、密码,登录失败"
])
def test_login(self, username, password):
print("username = {}, password = {}".format(username, password))
assert username == "lwjnicole"
if __name__ == '__main__':
pytes