Selenium3.0基础 — unittest中测试套件的使用

Posted 测试baby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium3.0基础 — unittest中测试套件的使用相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

1、测试套件的作用

在我们实际工作,使用unittest框架会有两个问题:

我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序。

一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么实现多个测试文件一起执行行。

要解决上面两个问题,我们就要用到测试套件TestSuite。

2、使用测试套件

(1)入门示例

1)用法:

unittest.TestSuite():创建测试套件。
addTest()和addTests()方法是将测试用例添加到测试套件中。
unittest.TextTextRunner():通过该类下面的run()方法来运行suite所组装的测试用例,suite测试套件为run()方法参数。
例如:将test_Demo1模块下的TestDmeo类下的test_case_01测试用例添加到测试套件中。

python
# 1.创建测试套件
suite = unittest.TestSuite()

# 2.向测试套件中添加测试用例
# 模块名.测试类名('测试用例名')
suite.addTest(test_Demo.TestDmeo('test_case_01'))

# 3.执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(suite)

2)示例:

python
# 1 导入unittest
import unittest

# 2 创建测试类
class TestDmeo(unittest.TestCase):

    # 3 编写test case
    def test_case_01(self):
        """测试用例1"""
        print("执行测试用例1")

    def test_case_02(self):
        """测试用例2"""
        print("执行测试用例2")

    def test_case_03(self):
        """测试用例3"""
        print("执行测试用例3")


if __name__ == '__main__':
    # 执行当前测试类中,以test开头的测试用例
    # unittest.main()

    # 1. 创建测试套件
    suite = unittest.TestSuite()
    # 2. 向测试套件中添加测试用例
    # 当前模块中的测试用例,可省略模块名(文件名)
    suite.addTest(TestDmeo('test_case_02'))
    suite.addTest(TestDmeo('test_case_03'))
    suite.addTest(TestDmeo('test_case_01'))
    # 3. 执行测试套件中的用例
    runner = unittest.TextTestRunner()
    runner.run(suite)

提示:向测试套件中添加测试用例的顺序,就是测试用例执行的顺序。(此时解决了第一个问题)

注意:

使用PyCharm执行上边代码,会按顺序执行全部测试用例,这是PyCharm问题。

使用命令行直接执行该Python文件,没有问题。

(2)根据不同的条件加载测试用例(了解)

提示:这种方式很少用,了解一下即可。推荐都用下面的方式(3)。

unittest.TestLoader():根据不同的条件加载测试用例,其中有几个方法:

1、unittest.TestLoader().loadTestsFromName(测试用例名)

2、unittest.TestLoader().loadTestsFromNames(测试用例名的列表)

3、unittest.TestLoader().loadTestsFromTestCase(测试类名)

4、unittest.TestLoader().loadTestsFromModule(模块名)

5、unittest.TestLoader().discover()

例如:将``test_demo2模块下的TestDmeo类下的test_case_01`测试用例添加到测试套件中。

测试用例名格式:文件名+类名+方法名,一级一级的。

示例:

python
# 1 导入unittest
import unittest

# 2 创建测试类
class TestDmeo(unittest.TestCase):

    # 3 编写test case
    def test_case_0001(self):
        """测试用例0001"""
        print("执行测试用例0001")

    def test_case_0002(self):
        """测试用例0002"""
        print("执行测试用例0002")

    def test_case_0003(self):
        """测试用例0003"""
        print("执行测试用例0003")


if __name__ == '__main__':
    # 1. 创建测试套件
    suite = unittest.TestSuite()

    # 2. 向测试套件中添加测试用例
    """
    # 2.1 loadTestsFromName
    # 提示:
        name参数是传入文件名,字符串格式
        格式:模块名.测试类名.测试用例名  
    """
    # suite_1 = unittest.TestLoader().loadTestsFromName('test_demo2.TestDmeo.test_case_01')

    """
    # 2.2 loadTestsFromNames
        参数是一个列表,列表中的元素格式同上
    """
    # suite_1 = unittest.TestLoader().loadTestsFromNames(
    #     ['test_demo2.TestDmeo.test_case_01','test_demo2.TestDmeo.test_case_02'])

    """
    # 2.3  loadTestsFromTestCase
        参数一个测试类名
        当前模块直接传如测试类名称即可
    """
    suite_1 = unittest.TestLoader().loadTestsFromTestCase(TestDmeo)

    # 加入套件
    suite.addTest(suite_1)
    # 3. 执行测试套件中的用例
    runner = unittest.TextTestRunner()
    runner.run(suite)

(3)常用方式(推荐)

unittest.defaultTestLoader():通过该类下面的discover()方法可自动根据测试目录test_dir匹配查找测试用例文件,如test*.py,并将查找到的测试用例组装到测试套件中。

1)简单示例:

discover=unittest.defaultTestLoader.discover(test_dir, pattern=‘test_*.py’)

2)测试套件示例:

1、创建test_case包用来存放测试用例。

2、以上面两个测试类做例子,把test_demo1和test_demo2两个测试用例类文件放入test_case包中。

3、编写调用用例脚本run_case.py文件执行多个测试用例。

3)说明:

test_demo1和test_demo2两个文件,就是上面(1)(2)的示例。

下面是run_case.py文件内容,需求是同时执行test_demo1和test_demo2两个文件中的测试用例。

python
"""
1.学习目标
    run_case.py必须会写
2.操作步骤
    2.1 明确测试用例存放路径
    2.2 将要执行的用例添加到测试套件中
    2.3 执行测试套件中的用例
3.注意事项
    1.run_case.py文件需要放置在项目根目录下
    2.所有测试用例都写在test_caset文件夹中
    3.编写用例的py文件需要以test开头
"""
# 1.导入unittest
import unittest

# 2.获取测试用例存放路径---测试用例存放文件夹
case_path = "./test_case"

# 3.添加用例到测试套件中
"""
# 如果只添加一个文件,pattern就直接填写文件名
start_dir, 指定case目录
pattern='test*.py', 匹配文件规则,# 选择文件夹中的写test_开头的py文件
"""
discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")  

# 4.执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(discover)

这里给大家整理了一份《软件测试工程师进阶的技术栈》,包含了诸多技术栈,希望能帮助在升级打怪中提供中坚力量

给大家推荐下我自己建的软件测试交流学习群: 902061117 ,群里都是搞软件测试的,如果你正在学习测试 ,小编欢迎你加入,大家都是测试党,群内不定期分享干货(都是软件测试相关的),包括我自己整理的一份2021最新的进阶自动化资料。

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

关注我的微信公众号【伤心的辣条】免费获取~

送上一句话:

世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

在这里插入图片描述

好文推荐:

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

测试岗反复跳槽,跳着跳着就跳没了…

软件测试人员该学习 Python 的七个理由

App公共测试用例梳理

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

35岁之后软件测试工程师靠什么养家?我能继续做测试!

以上是关于Selenium3.0基础 — unittest中测试套件的使用的主要内容,如果未能解决你的问题,请参考以下文章

『心善渊』Selenium3.0基础 — 4Selenium基础元素定位详解

Selenium3.0 自动化测试

Selenium3.0 + Java8环境配置——入门

selenium3.0 远程模式

UnitTest基础测试实例

启动火狐和谷歌在Selenium3.0上的启动