unittest框架
unittest框架是黑盒测试,主要做UI界面层的功能测试的框架,而java Junit单元测试框架,是白盒测试
利用单元测试框架,创建一个类,该类继承unittest 的TestCase,这样可以把每个case看成是一个最小的单元,由测试容器组织起来,到时候直接执行,同时引入测试报告。
测试固件:
测试固件是的两个方法?
SetUp():SetUp方法进行测试前初始化
TearDown():UI功能测试后的清理工作
测试用例TestCase:
必须以 test_开头
在unitteat框架可以写多个测试用例,只要是test_开头
测试用例的执行顺序
测试用例的默认顺序:0 ~ 9,A ~ Z,a ~ z
忽略测试用例的执行:@unittest.skip(“skipping”),在要忽略执行的测试用例前面加上这句
测试套件TestSuite:
测试套件:把不同脚本中的测试用例组织起来,一起执行。
在unittest中是用TestSuite 类来表示的。
完整的单元测试很少只执行一个测试用例,开发人员通常都需要编写多个测试用例才能对某一软件功能进行比较完整的测试,这些相关的测试用例称为一个测试用例集,
addTest:把测试脚本一个一个添加进来
**makeSuite和TestLoader **:都是 把整个测试脚本中的所有测试方法都添加到测试套件中
discover:把一个文件夹下,以某种格式命名的所有脚本里面的全部测试方法都添加到测试套件中
unittest断言
断言判断实际结果和预期结果是否一致。用来检验测试是否满足预期结果。
常用的断言:
序号 | 断言方法 | 断言描述 |
---|---|---|
1 | assertEqual(arg1, arg2, msg=None) | 验证arg1=arg2,不等则fail |
2 | assertNotEqual(arg1, arg2, msg=None) | 验证arg1 != arg2, 相等则fail |
3 | assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail |
4 | assertFalse(expr,msg=None) | 验证expr是false,如果为true,则fail |
5 | assertIs(arg1, arg2, msg=None) | 验证arg1、arg2是同一个对象,不是则fail |
6 | assertIsNot(arg1, arg2, msg=None) | 验证arg1、arg2不是同一个对象,是则fail |
7 | assertIsNone(expr, msg=None) | 验证expr是None,不是则fail |
8 | assertIsNotNone(expr, msg=None) | 验证expr不是None,是则fail |
9 | assertIn(arg1, arg2, msg=None) | 验证arg1是arg2的子串,不是则fail |
10 | assertNotIn(arg1, arg2, msg=None) | 验证arg1不是arg2的子串,是则fail |
11 | assertIsInstance(obj, cls, msg=None) | 验证obj是cls的实例,不是则fail |
12 | assertNotIsInstance(obj, cls, msg=None) | 验证obj不是cls的实例,是则fail |
selenium添加断言,鼠标右键点击selenium IDE,assert
HTMLReport:测试报告
生成测试报告的步骤:
1.解决测试报告存放的位置
2.解决测试报告命名问题:时间命名
3.生成测试报告
比如测试baidu1.py,下面给出baidu1.py的代码:
from selenium import webdriver
import unittest
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
#关键字 类名(使用unittest框架)
#继承,Baidu1这个类继承自unittest.TestCase类,就可以使用unittest框架
class Baidu1(unittest.TestCase):
#setUP(self)初始化方法
#self代表类的实例,在方法的一个参数
#定义全局变量 self.变量名
#测试固件
def setUp(self):
#self.driver不写self的话,driver是局部变量,写了之后是全局变量
self.driver = webdriver.Chrome()
self.url = "https://www.baidu.com/"
self.driver.maximize_window()
time.sleep(3)
#清理
def tearDown(self):
self.driver.quit()
#测试用例
def test_hao(