Python+Selenium测试用例脚本的组织和管理

一、 unittest是什么?

Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。
在说unittest之前,先说几个概念:
TestCase 也就是测试用例
TestSuite 多个测试用例集合在一起,就是TestSuite
TestLoader是用来加载TestCase到TestSuite中的
TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

二、 unitest的工作原理

通过unittest类调用分析,可将框架的工作流程概况如下:
编写TestCase,由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,最后将运行的结果保存在TextTestResult中。

三、测试用例的组织结构

import unittest
class MyTest(unittest.TestCase):  # 继承unittest.TestCase
    def tearDown(self):
        # 每个测试用例执行之后做操作
        print('每个案例测试后执行')

    def setUp(self):
        # 每个测试用例执行之前做操作
        print('每个案例测试前执行')

    @classmethod
    def tearDownClass(self):
        # 必须使用 @ classmethod装饰器, 所有test运行完后运行一次
        print('所有案例测试后执行')

    @classmethod
    def setUpClass(self):
        # 必须使用@classmethod 装饰器,所有test运行前运行一次
        print('所有案例测试前执行')

    def test_a_run(self):
        print("test_a")
        self.assertEqual(1, 1)  # 测试用例

    def test_b_run(self):
        print("test_b")
        self.assertEqual(2, 2)  # 测试用例


if __name__ == '__main__':
    unittest.main()  # 运行所有的测试用例

四、用TestLoader加载TestCase到TestSuite:

  #测试文件myt1.py
import unittest
from selenium import webdriver
class mytest1class(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Firefox()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()
        cls.driver.get("http://www.baidu.com")
    def test1(self):
        print("----test1----begin")
        self.assertEqual(1,1)
    def test2(self):
        print("---test2---begin")
        self.assertEqual(2,3)
    def test3(self):
        print("----test3---begin")
        self.assertEqual(3,3)
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
#if __name__=="__main__":
    #unittest.main()
#测试文件myt2.py
import unittest
from selenium import webdriver
class mytest2class(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Firefox()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()
        cls.driver.get("http://www.sogou.com")
    def test1(self):
        print("--test4---begin")
        self.assertEqual(4,4)
    def test2(self):
        print("--test5---begin")
        self.assertEqual(4, 5)
    def test3(self):
        print("--test6---begin")
        self.assertEqual(6, 6)
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
#if __name__=="__main__":
    #unittest.main()
#测试文件mysmoketest.py
from selenium import webdriver
import HTMLTestRunner
import unittest
from myt1 import mytest1class
from myt2 import mytest2class
dir=os.getcwd()
outfile=open(dir+"\myreport.html","wb+")
mytest1=unittest.TestLoader().loadTestsFromTestCase(mytest1class)
mytest2=unittest.TestLoader().loadTestsFromTestCase(mytest2class)
alltest=unittest.TestSuite([mytest1,mytest2])
unittest.TextTestRunner().run(alltest)

附:更改目标文件状态,否则from myt1 import mytest1class
from myt2 import mytest2class可能会报找不到目标文件。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值