ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【unittest单元测试框架】(3)unittest 编写 Web 自动化测试

2021-11-16 18:01:37  阅读:166  来源: 互联网

标签:baidu Web search driver unittest 单元测试 测试用例 self


unittest 编写 Web 自动化测试

  我们学习 unittest 的目的是用它编写 Web 自动化测试用例,所以接下来会将 unittest 与Selenium 结合起来进行 Web 自动化测试。   创建 test_baidu.py 文件。   这里将百度首页的访问和搜索过程封装成一个 baidu_search()方法,并定义 search_key参数为搜索关键字,根据接收的关键字执行不同内容的搜索。这里的 baidu_search()方法会被当作测试用例执行吗?当然不会,因为根据 unittest 查找和执行测试用例的规则,它只会把以“test”开头的方法当作测试用例。   另一个值得讨论的问题是,测试用例的断言要不要写在封装的方法中?从前面的代码可以看出,测试的断言点是一样的。不过,笔者更倾向于把断言写在每一条测试用例里面,因为很多时候就算操作步骤是一样的,断言点也不完全一样。例如,登录功能的测试用例,虽然操作步骤相同,但是用户名为空和密码为空,这两条测试用例的提示信息可能显示在不同的位置,所以获取提示信息的定位方法是不一样的,因此断言也就不完全一样了。另外,从设计的角度来看,断言写在每一个测试用例中也会更加清晰。我们发现每一条测试用例都要启动和关闭一次浏览器,这是非常耗时的,那么如何减少浏览器的启动和关闭次数呢?利用前面学过的setUpClass/tearDownClass可以解决这个问题。
# -*- coding:utf-8 -*-
# filename: test_baidu.py
# author: hello.yin
# create time: 2021/11/16 17:31

import unittest
from time import sleep
from selenium import webdriver


class BaiduTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()
        cls.base_url = "https://www.baidu.com"

    def baidu_search(self, search_key):
        self.driver.get(self.base_url)
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys(search_key)
        self.driver.find_element_by_id("su").click()
        sleep(2)

    def test_selenium(self):
        search_key = "selenium"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + "_百度搜索")

    def test_unittest(self):
        search_key = "unittest"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + "_百度搜索")

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()


if __name__ == "__main__":
    unittest.main(verbosity=2)
虽然我们将 driver 驱动定义为 cls.driver,但是在每个测试用例中使用时依然为self.driver。当整个测试类中的所有测试用例都运行完成后,会调用 cls.driver.quit()关闭浏览器。当一个测试类中有多条测试用例时,这种方式将大大缩短测试用例的执行时间。

 执行结果:

Testing started at 17:48 ...
C:\Users\yzp\AppData\Local\Programs\Python\Python37\python.exe "C:\Program Files\JetBrains\PyCharm 2018.2\helpers\pycharm\_jb_unittest_runner.py" --path D:/00test/base_practice/practice/test_baidu.py
Launching unittests with arguments python -m unittest D:/00test/base_practice/practice/test_baidu.py in D:\00test\base_practice\practice


Ran 2 tests in 18.546s

OK

Process finished with exit code 0

标签:baidu,Web,search,driver,unittest,单元测试,测试用例,self
来源: https://www.cnblogs.com/yinzuopu/p/15562565.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有