专栏首页赖权华的笔记Python+Selenium笔记(三):使用unittest

Python+Selenium笔记(三):使用unittest

#网络很慢可能会运行报错

(一)   前言

Selenium WebDriver是一个浏览器自动化测试的API集合。它提供了很多与浏览器自动化交互的特性,并且这些API主要是用于测试Web程序。如果仅仅使用Selenium WebDriver,我们无法实现执行测试前置条件、测试后置条件,比对预期结果和实际结果,检查程序的状态,生成测试报告,创建数据驱动的测试等功能。

(二)   unittest单元测试框架

unittest(一般称为PyUnit)是从Java程序开发中广泛应用的JUnit启发而来的。unittest使我们具备创建测试用例、测试套件、测试夹具的能力。

(三)   xUnite测试框架

Arrange:是用来初始化测试的前置条件,包含初始化被测试的对象、相关配置和依赖。

Act:用来执行功能操作。

Assert:用来校验实际结果与预期结果是否一致。

(四)   TestCase类

通过继承TestCase类并且在测试类中为每一个测试添加测试方法来创建单个测试或者一组测试。

(五)   使用unittest

(1)       定义一个继承于TestCase 类的子类。

(2)       在类中定义setUp()方法。

(3)       编写测试方法

(4)       代码清理(在类中定义tearDown()方法)

(5)       运行测试

说明:

1、  一个测试用例是从setUp()方法开始执行的,我们可以用这个方法在每个测试开始前去执行一些初始化的任务。可以是这样的初始化准备:比如创建浏览器实例,访问URL,加载测试数据和打开日志文件等。此方法没有参数,而且不返回任何值。当定义了一个setUp()方法,测试执行器在每次执行测试方法之前优先执行该方法。

2、  有了setUp()方法,就可以写一些测试用来验证我们想要测试的程序的功能。测试方法命名以test开头,这种命名约定通知test runner哪个方法代表测试方法。

3、  类似于setUp()方法在每个测试方法之前被调用,TestCase类也会在测试执行完成之后调用tearDown()方法来清理所有的初始化值。一旦测试被执行,在setUp()方法中定义的值将不再需要,所以最好的做法是在测试执行完成的时候清理掉由setUp()方法初始化的数值。

(六)   新建一个目录 data ,创建一个文件category.txt,录入以下数据

编程语言,Java,C++,PHP,Delphi,Python,Ruby,C语言,Erlang,Go,Swift,Scala,R语言,Verilog,其它语言

(七)   测试博客园首页编程语言下的分类信息是否与预期结果一致

import unittest

from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time class SearchTest (unittest.TestCase): def setUp(self):         self.driver = webdriver.Firefox()         self.driver.implicitly_wait(10)         self.driver.maximize_window()         self.driver.get("https://www.cnblogs.com/") def test_search_by_category(self): #读取category.txt文件,返回一个字典 with open('data/category.txt', encoding='UTF-8') as category_file:             category_dict = dict()             category_data = category_file.readline().strip().split(',')             the_class = category_data.pop(0)             category_dict[the_class] = category_data #定位首页网站分类中的编程语言 self.seach_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]') #光标悬停在“编程语言”上 ActionChains(self.driver).move_to_element(self.seach_class).perform() # 以列表形式返回编程语言下的所有小类 seach_small = self.driver.find_elements_by_xpath( '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li') #休眠3秒 time.sleep(3)         small_cate = [] for s in seach_small: #去掉小类最后面的3个字符(0),并添加到列表small_cate中 small_cate.append(str(s.text)[:-3]) #检查表达式是否为true(此处检查编程语言下的小类是否与预期结果一致) self.assertTrue(small_cate == category_dict["编程语言"]) # self.assertEqual(small_cate,category_dict["编程语言"]) def tearDown(self):         self.driver.quit() #加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试 if __name__ == '__main__': #加verbosity=2参数,在命令行中显示具体的测试方法 unittest.main(verbosity=2)

(八)   测试结果如下

通过命令行运行:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • loadrunner笔记(一):下载、安装loadrunner和负载压力测试概念说明

    free赖权华
  • Python+Selenium笔记(十八):持续集成jenkins

    (一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块。  pip install xmlrunner (二)安装jenkins ...

    free赖权华
  • Python笔记(一):安装+爬虫环境配置+打包为EXE文件

    1、     安装 https://www.python.org/downloads/windows/ 到官网下载安装程序 Windows x86      ...

    free赖权华
  • 有了测试工程师=质量?

    从产品角度来看,他们评估整体测试覆盖度,并验证其他工程师角色在测试方面合作的有效性

    louiezhou001
  • 服务端接口自动化测试工具大全及适配环境解析

    在互联网时代,服务端测试已经成为一个重要的产品保障手段,各对此公司实施的方法和技术也不同,本文我们就来讨论一下。 互联网服务端接口自动化是各个公司都需要一部分业...

    CSDN技术头条
  • 你的密码保护问题真的安全吗?

    安全研究人员Elie Bursztein和Ilan Caron对Google用户使用的数以百万计的密码保护问题及答案进行了数据分析,研究结果表明,密码保护这种“...

    FB客服
  • 中文NLP笔记:2. 中文分词的工具 jieba

      中科院计算所 NLPIR、哈工大 LTP、清华大学 THULAC 、斯坦福分词器、Hanlp 分词器、jieba 分词、IKAnalyzer 等

    杨熹
  • if语句

    每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。条件测试的值为True,就执行紧跟在if语句后面的代码;如果为False,...

    清菡
  • 论接口自动化测试方法

    每当我们谈起自动化测试时,第一反应是UI自动化测试;而具有一些经验的测试人员,则会非常慎重的对待UI自动化,他们会更加倾向于接口自动化测试。究其缘由,主要是因为...

    上帝De助手
  • TDD的实践人员是谁?QA在编写自动化测试的时候如何进行TDD?

    TDD,测试驱动开发,通常如果不加限定,是指狭义的测试驱动开发,有的人也称为单元测试,但这个单元也不是特指对一个类或者一个方法这么简单的定义,而是为了跟像验收测...

    袁慎建@ThoughtWorks

扫码关注云+社区

领取腾讯云代金券