UnitTest框架

概念:

UnitTest框架是专门用来进行执行代码测试的框架;

优点:

  1. 能够组织多个用例去执行
  2. 提供丰富的断言方法
  3. 提供丰富的日志与测试结果

核心要素

  • TestCase

说明:(翻译:测试用例)一个TestCase就是一条测试用例;
使用:
1.导包:import unittest --> 导入unitest框架
2.继承:unittest.TestCase --> 新建测试类继承unittest.TestCase

提示:
1). 测试用例:在自动化测试中,一条用例就是一个完整的测试流程;
2).测试方法名称命名必须以test开头; (原因:unittest.TestCase类批量运行的方法是搜索执行test开头的方法)

  • TestSuite

说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite; 使用:
1. 实例化: suite=unittest.TestSuite()
(suite:为TestSuite实例化的名称)
2. 添加用例:suite.addTest(ClassName(“MethodName”))
(ClassName:为类名;MethodName:为方法名)
3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName))
(搜索指定ClassName内test开头的方法并添加到测试套件中)
4.suite = unittest.defaultTestLoader.discover(test_dir, pattern=‘iweb_*.py’)

提示:
1). 一条测试用例(.py)内,多个方法也可以使用测试套件
2). TestSuite需要配合TextTestRunner才能被执行

  • TextTestRunner

说明:(翻译:测试执行)是用来执行测试用例套件
使用:
1. 实例化: runner=unittest.TextTestRunner()
(runner:TextTestRunner实例化名称)
2. 执行: runner.run(suite)
(suite:为测试套件名称)

  • Fixture

说明:是一个概述,对一个测试用例环境的搭建和销毁就是一个Fixture;
使用:
1. 初始化(搭建):def setUp(self) --> 首先执行
(setUp:此方法继承于unittest.TestCase)
2. 结束(销毁): def tearDown(self) --> 最后执行
(tearDown:此方法继承于unittest.TestCase)
提示:
1. 必须继承unittest.TestCase类,setUp、tearDown才是一个Fixture;
2. setUp:一般做初始化工作,比如:实例化浏览器、浏览器最大化、隐式等待设置
3. tearDown:一般做结束工作,比如:退出登录、关闭浏览器
4. 如果一个测试类有多个test开头方法,则每个方法执行之前都会运行setUp、结束时运行tearDown

案例:

需求:使用UnitTest框架对iweb_shop项目登陆进行测试
分析:

  1. 导包 import unittest
  2. 新建测试类并继承unittest.TestCast
  3. 新建一个Fixture(setUp、tearDown)
  4. 新建登录方法
  5. if name == ‘main’:
  6. unittest.main()执行
    代码:
import unittest
from time import sleep
from selenium import webdriver
class TestLoginOut(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Firefox()
        url = "http://localhost/iwebshop/"
        self.driver.get(url)
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()
        print("setUp")
    def test_login(self):
        driver=self.driver
        driver.find_element_by_link_text("登录").click()
        driver.find_element_by_css_selector("input[alt*='邮箱']").send_keys("admin")
        driver.find_element_by_css_selector("input[alt*='密码']").send_keys("123456")
        driver.find_element_by_css_selector(".submit_login").click()
        sleep(3)
        driver.find_element_by_css_selector(".reg").click()
    def tearDown(self):
        sleep(2)
        self.driver.quit()
        print("tearDown")
if __name__ == '__main__':
    # 调用main方法执行unitetest内所有test开头方法
    unittest.main()

defaultTestLoader

说明:
使用unittest.defaultTestLoader()类,通过该类下面的discover()方法自动搜索指定目录下指定开头
的.py文件,并将查找到的测试用例组装到测试套件;

用法:
test_dir = ‘./’
disconver = unittest.defaultTestLoader.discover(test_dir, pattern=‘iweb_*.py’)
(test_dir为要指定的目录 ./为当前目录;pattern:为查找的.py文件的格式 )
运行:
runner=unittest.TextTestRunner()
runner.run(disconver)

defaultTestLoader与TestSuite区别

  1. TestSuite可以添加TestCase中所有test开头的方法和添加指定的test开头方法;
  2. defaultTestLoader搜索指定目录下指定开头.py文件,并添加TestCase内所有test开头的方法,不能指定添加方法;

提示:defaultTestLoader属于TestSuite另一种实现方式;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值