selenium+python学ui自动化测试入门(二):unittest框架入门了解

本文介绍了使用unittest进行UI自动化测试的基础知识,包括unittest的四个核心组成部分:TestCase、TestFixture、TestSuite和TestRunner。通过示例展示了如何创建测试用例、设置测试环境、组合测试套件以及执行测试。还探讨了测试用例的执行顺序,并强调了测试文件命名的重要性。

单元测试框架:unittest

unittest包括四大组成部分:
1.TestCase:一个TestCase的实例就是一个测试用例。(一个完整的测试流程)
包括:
测试前准备环境的搭建(setUp)
实现测试过程的代码(run)
测试后环境的还原(tearDown)

2.TestFixture:对一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
EG:
测试用例的执行需要访问数据库。
在setUp()中建立数据库连接来进行初始化。
在tearDonw()中清除数据库产生的数据。

3.TestSuite:测试套件:把多条用例放在一起执行。TestSuite用来组装单个测试用例。测试套件需要TestRunner去执行

4.TestRunner:测试的执行是单元测试中一个重要的概念。
一般单元测试框架中都会提供丰富的执行策略和执行结果。

我用以下例子来讲解以下:
新建的unit01文件为:右键->new->Python File->python unit test
unit01文件代码如下:

import unittest
from selenium import webdriver
from time import sleep

class MyTestCase(unittest.TestCase):
    def setUp(self):
        print("one")
    def tearDown(self):
        print("two")
    def test_baidu(self):     #第一个TestCase
        driver=webdriver.Chrome()
        driver.get("http://www.baidu.com")
        sleep(2)
        driver.quit()

    def test_sogou(self):     #第二个TestCase
        driver = webdriver.Chrome()
        driver.get("http://www.sogou.com")
        sleep(2)
        driver.quit()

在unit01文件里面,包括了TestCase和TestFixture,这个文件可以直接运行。test_baidu和test_sogou就是所编写的两个测试用例TestCase。setUp和tearDown是TestFixture的方法,一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
run.py代码如下:


```python
from unit01 import *
import unittest

suite=unittest.TestSuite()    #TestSuite测试套件
suite.addTest(MyTestCase('test_sogou'))
suite.addTest(MyTestCase('test_baidu'))

if __name__=="__main__":
    runner=unittest.TextTestRunner()     #TestRunner执行器
    runner.run(suite)

在run.py文件里面,写了TestSuite测试套件和TestRunner执行器。在unit01文件里,两条用例是一起执行的,在run.py里可以组合测试用例。TestRunner就是起一个执行器的作用,运行测试套件。

unittest框架_多个测试用例执行

当有多个测试文件时,用例执行:
在这里插入图片描述

#一条一条执行,测试用例多时很麻烦
# import unittest
# from case.unit01 import *
# from case.unit02 import *

# suite=unittest.TestSuite()
# suite.addTest(MyTestCase('test_baidu'))
# suite.addTest(MyTestCase('test_sogou'))
# suite.addTest(MyTestCase2('test_baidu'))
# suite.addTest(MyTestCase2('test_sogou'))
#
# if __name__=="__main__":
#     runner=unittest.TextTestRunner()
#     runner.run(suite)

#测试用例多时,新建一个文件case,吧用例都放进文件夹里
import unittest
dir='./case/'
suite=unittest.defaultTestLoader.discover(start_dir=dir,pattern='unit*.py')

if __name__=="__main__":
    runner=unittest.TextTestRunner()
    runner.run(suite)

unittest框架_多个测试用例执行顺序

unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0–9、A–Z、a–z。
对于测试目录与测试文件来说,unittest框架同样是按照这个规则来加载测试用例的。
那么如何改变用例的执行顺序?
discover()的加载用例规则与main()方法相同,我们只能通过测试用例的命名来提高被执行的优先级。EG: test_a……test_z

但是如果用了测试套件那么顺序就会以测试套件的顺序去运行,比如上图,在unit01中,顺序是先执行baidu,在执行sogou,但是如果运行run.py,那么执行顺序是先sogou在baidu。
所以!!文件的命名还是非常重要的啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值