【自动化测试不求人】selenium单元测试框架unittest断言神器
单元测试库(unittest)实现了我们开发代码过程中实际值和预期值进行比较这类功能,使用起来也很方便。Unittest作为一种单元测试框架,其思想来源于Junit,跟目前市场上主流的一些测试框架有很多相似之处。
Unittest工作流中核心的四大组件简介:
- Test fixture是指执行测试之前的准备工作,比如说数据清理工作,创建临时数据库,目录或者是开启某些服务进程等。
- Test case是最小的测试单元,具有独立性。主要检测输出结果是否满足期望,这些结果是基于一系列特定的输入。Unittest提供了一个基类“TestCase”用来创建新的test cases.
- Test suite可以简单理解为是test case的集合。主要用来对于集成管理要在一起执行的测试用例。
- Test runner也是unittest的一个重要的组件,主要是为了协调测试的执行并提供结果输出给用户参考。
Unittest提供了很丰富的工具集来创建和运行单元测试。
- 所有的测试用例类要继承基本类unittest.TestCase。Python语法规定,父类要写在小括号内,如:“XXXTest(unittest.TestCases)”。
- unittest.main()作用是使一个单元测试模块变为可直接运行的测试脚本。
main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。因此A开头的测试用例方法会优先执行,以a开头会后执行。
- unittest.TestSuite(),单元测试框架中的TestSuite()类是为了创建测试套件。其中最常用的一个方法是addTest()方法,目的是要将测试用例添加到测试套件中。
- 每一个独立的单元脚本中的测试方法应该都是以“test”字符串开始,这样的命名惯例是不能更改的,或则单元测试不会照常执行。
- assertEqual()方法功能是验证实际执行结果是不是期望值。
- assertTrue()和assertFalse()功能是验证是否满足一定条件。
- assertRaises()是为了验证单元测试是否会抛出某一个特定异常,如TypeError。
- setUp()方法是用于测试用例执行前的初始化工作。如以测试登录web应用为例,在setUp()方法中去实例化浏览器等操作。
- teardown()方法用于测试用例执行之后的善后操作,如关闭数据库连接和关闭浏览器等操作。
- assertXxx(),一般是一些断言方法,在执行测试用例的过程中,最终测试用例是否执行通过,否则判定预期值和实际值是否一致。
1)普通断言示例:
#学习有疑问请联系作者
#作者qq:2574674466
#作者邮箱2574674466@qq.com
import unittest
import HTMLTestRunner
class test_se(unittest.TestCase):
def setUp(self):
pass
def test_01(self):
self.assertEqual("selenium","appium")
def test_02(self):
self.assertEqual("tim","tim")
def test_03(self):
self.assertIn("a","abc")
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
2)批量执行示例:
test_01.py
#学习有疑问请联系作者
#作者qq:2574674466
#作者邮箱2574674466@qq.com
import unittest
class test_se(unittest.TestCase):
def setUp(self):
pass
def test_01(self):
self.assertEqual("selenium","appium")
def test_02(self):
self.assertEqual("tim","tim")
def test_03(self):
self.assertIn("a","abc")
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
test_02.py
#学习有疑问请联系作者
#作者qq:2574674466
#作者邮箱2574674466@qq.com
import unittest
import HTMLTestRunner
class test_se(unittest.TestCase):
def setUp(self):
pass
def test_04(self):
self.assertEqual("selenium","appium")
def test_05(self):
self.assertEqual("tim","tim")
def test_06(self):
self.assertIn("a","abc")
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
run.py 执行以test开头脚本
#学习有疑问请联系作者
#作者qq:2574674466
#作者邮箱2574674466@qq.com
import unittest
import os
#查询测试用例路径
case_path = os.path.join(os.getcwd(),"testsuite")
def allcases():
discover = unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)
print(discover)
return discover
if __name__ == "__main__":
runner = unittest.TextTestRunner()
runner.run(allcases())
视频、学习笔记联系qq:2574674466
更多内容请关注公众号:“大牛测试
欢迎加入交流群:Selenium学习群: 628908894