• unittest详解(一) unittest框架


    unittest 介绍了4 个重要的概念: test case, test suite, test runner,test fixture。

        1、testcase: 一个TestCase 的实例就是一个测试用例, 就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原(tearDown)。元测试(unittest)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。

      setUp 用于设置初始化工作,在每一个测试用例前先被执行,它与tearDown方法相呼应,后者在每一个测试用例执行后被执行。这里的初始化工作定义了浏览器启动和基础URL 地址。

        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.implicitly_wait(30)
            self.base_url = "https://172.1.1.1/"
            self.verificationErrors = []
            self.accept_next_alert = True

      tearDown 方法在每个测试方法执行后调用,这个方法用于完成测试用例执行后的清理工作,如退出浏览器、关闭驱动,恢复用例执行状态等。在setUp()方法中定义了verificationErrors 为空数组,这里通过assertEqual()比较其是否为空,如果为空说明用例执行的过程过程中没有出现异常,否则将抛出AssertionError 异常:

        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)

      2、testsuite: 对一个功能的验证往往是需要多测试用例的,可以把多的测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它用来组装单个测试用例,而且TestSuite 也可以嵌套TestSuite。

    testSuite()可以被看作一个容器(测试套件),通过addTest 方法我们可罗列具体所要执行的测试用例。如果使用unittest.main() 的话默认会执行所有以test 开头的测试用例。

      3、testrunner: TextTestRunner 是来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存到TextTestResult 实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

      4、testfixture: 对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase 的setUp()和tearDown()方法来实现. 

      了解unittest框架之后,练习一个登录的例子,代码如下:

    # coding=utf-8
    from selenium import webdriver
    import unittest
    
    class task_a(unittest.TestCase):
        def setUp(self): #每个测试用例之前执行
            self.driver=webdriver.Chrome()
            self.url="https://172.1.1.1"
            self.verificationErrors=[]
            self.accept_next_alter=True
        def tearDown(self):  #每个测试用例之后执行
            self.driver.quit()
            self.assertEqual([],self.verificationErrors)
        def test_1(self):
            u"测试用例1"
            driver=self.driver
            driver.get(self.url)
            driver.maximize_window()
            username='user1'
            driver.find_element_by_css_selector("input.login-form").send_keys(username) #定位到用户名输入框
            driver.find_element_by_css_selector("input.passwd").send_keys('123456') #定位到密码输入框
            driver.find_element_by_css_selector("input.btn.btn-default").click()  #点击登录按钮
            info = driver.find_element_by_css_selector("#userMenu > div.user-id").text
            self.assertEqual(username, info)
            print("login用例执行完成")
    if __name__=='__main__':
        unittest.main()

     

  • 相关阅读:
    [2012山东ACM省赛] Fruit Ninja II (三重积分,椭球体积)
    [2012山东ACM省赛] The Best Seat in ACM Contest (模拟)
    [2012山东ACM省赛] n a^o7 !(模拟,字符替换)
    [ACM] Hrbustoj 1376 能量项链 (区间动态规划)
    红黑树 c++ 实现
    八大排序算法
    git 常用命令
    linux 学习笔记 day1
    挑战:数据提取 — 实验楼
    挑战:历史命令 — 实验楼
  • 原文地址:https://www.cnblogs.com/xiatian09/p/9774039.html
Copyright © 2020-2023  润新知