python 自动化unitest单元测试讲解
智能的单元测试框架 ,是开发写代码自测的
我们测试用单元测试去实现自动化 使用 unittest模块
怎么写用例
import unittest
import my_function
# def add(a,b):
# return a+b
class TestAdd(unittest.TestCase):
def add_norn(self):
result=my_function.add(1,2)
self.assertEquals(3,result)#第三个参数传不通过的
def add_error(self):
result=my_function.add(1,2)
self.assertEquals(4,result)#第三个参数传不通过的
def add_error2(self):
result=my_function.add(1,2)
self.assertEquals(4,result,'正常整数加法没有通过')#第三个参数传不通过的
if __name__=='__main__':
unittest.main()
调用完毕,结果显示为0
使用unittest 直接运行产生不了测试报告 ,会出现testrnner
需要使用python 自带run 选择run...运行可以产生测试报告 切记切记
如果还是运行是0就有要看测试用例的标题是不是以test开头的
import unittest
import my_function
class TestAdd(unittest.TestCase):
def test_add_normal(self):
result=my_function.add(1,2)
self.assertEqual(3,result)
def test_add_error(self):
result=my_function.add(1,2)
self.assertEqual(4,result)
def test_add_error2(self):
result=my_function.add(1,2)
self.assertEqual(4,result,'正常整数加法没有通过')
if __name__=='__main__':
unittest.main()
注意用例的开头要写test 然后用run...运行这样才能产生测试报告
通过的不运行,不通过的会打印
前提安装 HTMLTestRunner 模块另外要将目录加进去环境变量否则HTMLTestRunner 方法.不出来
下载地址 验证码5s8g
https://pan.baidu.com/s/1gVDdb86X108oR8PGA_JXkQ#list/path=%2F
想要单独运行一条用例的方法
import unittest
import my_function
import HTMLTestRunner
class TestAdd(unittest.TestCase):
def test_add_normal(self):
result=my_function.add(1,2)
self.assertEqual(3,result)
def test_add_error(self):
result=my_function.add(1,2)
self.assertEqual(4,result)
def test_add_error2(self):
result=my_function.add(1,2)
self.assertEqual(4,result,'正常整数加法没有通过')
if __name__=='__main__':
test_suite=unittest.TestSuite()
# 产生单个测试用例
test_suite.addTest(TestAdd('test_add_error2')) #运行一条
# 产生所有用例
# test_suite=unittest.makeSuite(TestAdd)
# makeSuite 这个方法点不出来要传类名
with open('report.html', 'wb')as fw:
runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title='天马座操作', description='天马座接口座测试报告', verbosity=2)
runner.run(test_suite)
想要产生所有用例的方法
import unittest
import my_function
import HTMLTestRunner
class TestAdd(unittest.TestCase):
def test_add_normal(self):
result=my_function.add(1,2)
self.assertEqual(3,result)
def test_add_error(self):
result=my_function.add(1,2)
self.assertEqual(4,result)
def test_add_error2(self):
result=my_function.add(1,2)
self.assertEqual(4,result,'正常整数加法没有通过')
if __name__=='__main__':
test_suite=unittest.TestSuite()
# 产生所有用例
test_suite=unittest.makeSuite(TestAdd)
with open('report.html', 'wb')as fw:
runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title='天马座操作', description='天马座接口座测试报告', verbosity=2)
runner.run(test_suite)
下面讲解测试报告的生成
如果想要这种界面就要使用
HTMLTestRunner_PY3 导入这个测试模块
import unittest
import my_function
import HTMLTestRunner_PY3
class TestAdd(unittest.TestCase):
def test_add_normal(self):
result=my_function.add(1,2)
self.assertEqual(3,result)
def test_add_error(self):
result=my_function.add(1,2)
self.assertEqual(4,result)
def test_add_error2(self):
result=my_function.add(1,2)
self.assertEqual(4,result,'正常整数加法没有通过')
if __name__=='__main__':
#不产生测试报告
# unittest.main()
test_suite=unittest.TestSuite()
#产生单个测试用例
test_suite.addTest(TestAdd('test_add_error2')) #运行一条
# test_suite.addTest(TestAdd('test_add_error'))
#产生所有用例
# test_suite=unittest.makeSuite(TestAdd)
with open('report.html','wb')as fw:
# runner=HTMLTestRunner.HTMLTestRunner()
runner=HTMLTestRunner_PY3.HTMLTestRunner(stream=fw,title='天马座操作',description='天马座接口座测试报告',verbosity=2)
runner.run(test_suite)
# unittest.main()
# test_suite=unittest.TestSuite()
# test_suite.addTest(TestAdd('test_add_error2'))
# runner=unittest.TestRunner()
# runner.run(test_suite)
想要添加注释怎么操作
import unittest
import my_function
import HTMLTestRunner
class TestAdd(unittest.TestCase):
'''测试add方法'''
def test_add_normal(self):
'''正常测试加法'''
result=my_function.add(1,2)
self.assertEqual(3,result)
def test_add_error(self):
'''测试失败'''
result=my_function.add(1,2)
self.assertEqual(4,result)
def test_add_error2(self):
'''测试失败有报错的'''
result=my_function.add(1,2)
self.assertEqual(4,result,'正常整数加法没有通过')
if __name__=='__main__':
#产生所有用例
test_suite=unittest.makeSuite(TestAdd)
#makeSuite 这个方法点不出来要传类名
with open('report.html','wb')as fw:
# runner=HTMLTestRunner.HTMLTestRunner()
runner=HTMLTestRunner.HTMLTestRunner(stream=fw,title='天马座操作',description='天马座接口座测试报告',verbosity=2)
runner.run(test_suite)
在方法前面加上 ''' ''' 就可以操作了
如果想在测试报告里面添加模板怎么操作
设置完模板在新建一个就出来了 这就是 pycharm python文件模板 的设置操作
test_suite=unittest.defaultTestLoader('case','test*.py') 查找某个目录所有测试用例的用法
针对于 登录这种 方法一样,数据不一样的需要使用参数化
怎么来使用呢
parameterized 安装这个模块使用的方法为
@parameterized.parameterized.expand(
[[1,2,3],[-1,2,1]]
) 也就是
expand 方法来做参数化,把需要参数化的内容写进去