Python+Selenium UI自动化 - Unittest基本使用语法、断言、执行顺序

一、Unittest语法规则及示例

1、用import语句引入unittest模块

2、让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合

3、setUp()方法中进行测试前的初始化工作,teardown()方法中执行测试后的清除工作,它们都是TestCase中的方法

4、编写测试的方法最好以test开头(可以直接运行)deftest_add(self)、deftest_sub(self)等,可以编写多个测试用例对被测对象进行测试

5、在编写测试方法过程中,使用TestCaseclass提供的方法测试功能点,比如:assertEqual等

6、调用unittest.main()方法运行所有以test开头的方法

import unittest#1、导入unittest模块

class TestDemo(unittest.TestCase):#TestDemo继承TestCase类

    def setUp(self) -> None:#箭头是指方法预期的返回值类型 非强制要写
        print('setUp,初始化语句')

    def tearDown(self) -> None:
        print('tearDown,清理语句')

    def test_add(self):
        self.assertEqual(10+6,16,'test_add执行失败')# assertEqual 预期结果与实际结果不符时才会打印此语句
        print('test_add')

if __name__ == '__main__':
    unittest.main()

执行结果如下,可看出setUp和tearDown的执行顺序:

注意,运行unittest脚本时不要直接右击run,需要点击菜单顶部的run手动选择与原有脚本名称一致的文件执行,如下图:


二、Unittest断言语法

assertEqual(a,b)                 a==b  #是否相等

assertNotEqual(a,b)             a!=b  #是否不相等

assertTrue(x)                        bool(x)isTrue  #是否为True

assertFalse(x)                       bool(x)isFalse  #是否为False

assertIn(a,b)                          a in b  #是否包含

assertGreater(a,b)                 a>b  #大于

assertGreaterEqual(a,b)        a>=b  #大于等于

assertLess(a,b)                      a<b  #小于

assertLessEqual(a,b)             a<=b  #小于等于

import unittest

class TestDemo(unittest.TestCase):#TestDemo继承TestCase类

    def test_demo01(self): #判断是否相等
        self.assertEqual(1, 2, '不相等')

    def test_demo02(self): #判断是否不相等
        self.assertNotEqual(1,1,'相等')

    def test_demo03(self): #判断是否为True
        self.assertTrue(0,'不为True')#任何为真的表达式,非0 非空 true

    def test_demo04(self):  # 判断是否为False
        self.assertFalse([1,2,3],'不为False')

    def test_demo05(self): #判断是否包含
        self.assertIn('healer','b','无包含关系')#b内是否包含healer

    def test_demo06(self): #判断是否大于
        self.assertGreater(1,2,'不大于')

    def test_demo07(self): #判断是否大于等于
        self.assertGreaterEqual(1,2,'不大于等于')

    def test_demo08(self): #判断是否小于
        self.assertLess(2,1,'不小于')

    def test_demo09(self): #判断是否小于等于
        self.assertLessEqual(2,1,'不小于等于')

if __name__ == '__main__':
    unittest.main()

三、Unittest用例执行顺序

1、当在一个测试类或多个测试模块下,用例数量较多时,unittest在执行用例(test_xxx)时,并不是按从上到下的顺序执行,而是有特定的顺序,unittest框架默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z。

①对于类来说,classTestAxx会优先于classTestBxx被执行。

②对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。

③对于测试目录与测试文件来说,unittest同样是按照以上规则来加载测试用例的。

2、如何控制测试用例执行顺序

①顺应unittest的默认执行顺序,通过设置测试类或者测试方法方法名字来实现

②通过addTest()添加用例的顺序控制用例执行,先添加的先执行,后添加的后执行

import unittest

class LoginTest(unittest.TestCase):

    def test_login_demo01(self):
        print('exec login_demo01')

    def test_login_demo02(self):
        print('exec login_demo02')

    def test_login_demo03(self):
        print('exec login_demo03')

if __name__ == '__main__':
    #方法一:addTest(类名(方法名))实现测试套件
    login_suite = unittest.TestSuite()
    login_suite.addTest(LoginTest('test_login_demo02'))
    login_suite.addTest(LoginTest('test_login_demo01'))
    login_suite.addTest(LoginTest('test_login_demo03'))

    #方法二:makeSuite,此方法测试用例方法名必须以test开头
    # login_suite = unittest.TestSuite(unittest.makeSuite(LoginTest))#此行代码可运行所有测试用例
    unittest.main(defaultTest='login_suite')#对象名必须是字符串形式(测试套件对象)  不可直接引用

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是丸子丫

大佬们来个1毛钱以资鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值