python接口测试-unittest模块
文章目录
断言
assert 条件语句:
条件成立,没有任何返回,直接执行下一行代码
条件不成立,会报断言异常
1、写好测试方法
2、创建测试类(继承unittest.Testcast)
1、写好传入参数、预期结果
2、接收实际结果
3、使用unittest断言,比较预期结果与实际结果
测试用例类:
只要定义的类继承与unittest.Testcast那么这个类就是测试用例类
测试用例写法:
在测试用例类中定义以test开头的方法就是一条测试用例
unittest断言:
self.assertEqual(预期结果, 实际结果)
3、使用
# 1、建一个测试套件
测试套件:unittest.Testsuite
unittest.Testsuite这个类创建的的对象就是测试套件
例子:suite = unittest.TestSuite()
# 2、将测试用例加载到测试套件中
1、一条一条添加
# 创建测试用例对象的时候,必须要传入用例的方法名
# 创建一条测用例
case1 = Login_123("test_login")
# 将用例添加到套件中
suite.addTest(case1)
2、通过测试用例类进行添加
#创建一个用例类进行添加
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(LoginTest))
3、通过测试用例模块进行添加
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(Login2))
4、通过路径去进行加载(默认会加载该路径下面所有以test开头的模块中的测试用例,可以通过pattern这个参数指定模块名匹配规则)
loader = unittest.TestLoader()
suite.addTest(loader.discover("C:\Users\Administrator\PycharmProjects\人类毁灭计划\Interface_automation"), pattern = '*.py')
# 3、执行测试用例(需要创建一个测试运行程序)
测试运行程序:unittest.TextTestRunner
unittest.TextTestRunner这个类创建的的对象就是测试运行程序(执行测试用例)
runner = unittest.TextTestRunner()
runner.run(suite)
测试用例执行的顺序:根据用例的方法名,安装ASCII码进行排序的(不是根据定义的先后顺序)
个人理解的测试顺序----有错也死不悔改
- 首先有功能实现方法
# 简单的登录功能
def Login_123(user_name=None, password=None):
if user_name != None and password != None:
if user_name == "nicholas" and password == "123456":
return {"code": 0, "msg": "登录成功"}
else:
return {"code": 1, "msg": "登录失败"}
else:
return {"code": 1, "msg": "登录失败"}
- 创建一个测试类,写好测试用例,方法以test开头方便后续调用unittest模块使用(一个方法一个测试用例)
class LoginTest(unittest.TestCase):
def test_login(self):
data = ("nicholas", "123456")
expected = {"code": 0, "msg": "登录成功"}
res = Login_123(*data)
self.assertEqual(expected, res)
def test_login_usernameisNone(self):
data = ("", "123456")
expected = {"code": 1, "msg": "登录失败"}
res = Login_123(*data)
self.assertEqual(expected, res)
使用unittest模块测试用例
分为三步
1、创建一个测试套件
2、将测试用例加载到套件中---------四种方式
3、执行测试用例
1、建一个测试套件
suite = unittest.TestSuite()
2、将测试用例加载到测试套件中
2.1、一条一条添加
case1 = LoginTest("test_login")
case2 = LoginTest("test_login_usernameisNone")
suite.addTest(case1)
suite.addTest(case2)
2.2、通过测试用例类进行添加
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(LoginTest))
2.3 通过测试用例模块进行添加
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(Login2))
2.4 通过路径去进行加载(默认会加载该路径下面所有以test开头的模块中的测试用例,可以通过pattern这个参数指定模块名匹配规则)
# 有问题,我的会报错,可能跟有中文目录有关
loader = unittest.TestLoader()
suite.addTest(loader.discover("C:\Users\Administrator\PycharmProjects\人类毁灭计划\Interface_automation"), pattern = '*.py')
3、执行测试用例(需要创建一个测试运行程序)
# 使用unittest执行用例
runner = unittest.TextTestRunner()
runner.run(suite)
大佬提供的HTMLTestRunnerNew模块地址:
https://blog.csdn.net/weixin_45912307/article/details/110252894
# 使用HTMLTestRunnerNew第三方库执行后生产一个html文件,可以用浏览器打开
runner = HTMLTestRunner(stream=open("htm.html", "wb", encoding="utf-8"))
runner.run(suite)