当前位置: 首页 > news >正文

Selenium + Python 自动化测试11(unittest组织用例)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了unittest基本使用方法。

         本篇文章我们接着讲。一些概念和一些常用的构造测试集的方法。

1、基本概念

1)Test Case

         一个Test Case的实例就是一个测试用例。可以完成一整个的测试流程。包括测试前准备 测试环境的搭建(setUp)、实现测试过程的代码(run),以及测试后环境的还原(tearDown)。

单元测试的本质就是一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某个功能进行测试验证。

2)Test Suite

         一个功能一般需要多条测试案例,可以把多个测试用例集合在一起执行,这就产生了测试套件:Test Suite概念。可以通过addTest加载Test Case到Test Suite中执行。

3)Test Runner

         unittest 框架中,通过TextTestRunner 类提供的run()方法来执行Test Suite/Test Case,

Test Runner 可以使用图形界面、文本界面,返回一个特殊的值来表示测试执行的结果。

Test Fixture

         对一个测试用例环境的搭建和销毁就是一个Fixture。我们通过Test Case中setUp、tearDown来实现。

2、Test Suite 用法举例

1)我们先准备 2条测试用例

下面是我们写的登录两条用例:

#输入正确的密码登录成功测试def test_login_Y(self):driver = self.driverusername = "standard_user"password = "secret_sauce"print("登录的用户名是:%s,密码是:%s"%(username,password))#打开浏览器,并最大化driver.get("https://www.saucedemo.com/")driver.maximize_window()time.sleep(3)#输入用户名,driver.find_element_by_name("user-name").send_keys(username)  # by name 定位#输入密码driver.find_element_by_name("password").send_keys(password)  # by name 定位#点击登录按钮driver.find_element_by_id("login-button").click()  # by ID 定位time.sleep(3)#加入断言  //*[@id="header_container"]/div[1]/div[2]/div# 验证有显示:ProductsUIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').textself.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")# 输入错误的密码登录失败测试def test_login_N(self):driver = self.driverusername = "standard_user"password = "secret_NG"print("登录的用户名是:%s,密码是:%s" % (username, password))# 打开浏览器,并最大化driver.get("https://www.saucedemo.com/")driver.maximize_window()time.sleep(3)# 输入用户名,driver.find_element_by_name("user-name").send_keys(username)  # by name 定位# 输入密码driver.find_element_by_name("password").send_keys(password)  # by name 定位# 点击登录按钮driver.find_element_by_id("login-button").click()  # by ID 定位time.sleep(3)# 加入断言  //*[@id="header_container"]/div[1]/div[2]/div# 验证有报错显示:UIResult = driver.find_element_by_xpath('//*[@id="login_button_container"]/div/form/div[3]/h3').textself.assertEqual("Epic sadface: Username and password do not match any user in this service", UIResult, "密码错误登录验证失败,fail")

下面我们把它折叠起来就比较容易看出:两条用例

2)下面我们构造测试用例集
if __name__ =='__main__':#unittest.main()#构造测试用例集suite=unittest.TestSuite()suite.addTest(LoginTest('test_login_Y'))suite.addTest(LoginTest('test_login_N'))#执行测试runner=unittest.TextTestRunner()runner.run(suite)

连一起前面的代码执行:

查看下面的测试结果,可以看到执行了2条案例,也有一个简单的结果呈现。

今天就先讲到这里了。

每天进步一点点,加油!

http://www.lryc.cn/news/421449.html

相关文章:

  • 【唐氏题目 nt题】与众不同
  • 2000块的活嫌低?这个 6 位数的项目,你可不能错过哟!
  • 【Postman工具】
  • 全网超详细攻略-从入门到精通haproxy七层代理
  • AI编程辅助工具:CodeGeeX 插件使用
  • sql注入实战——thinkPHP
  • MySQL 迁移 OceanBase 的 Oracle模式中,实现自增主键的方法
  • 【C++ 面试 - 基础题】每日 3 题(十一)
  • ESP8266在线升级OTA固件
  • 精通C++ STL(六):list的模拟实现
  • 《雅思口语真经总纲1.0》话题实战训练笔记part1——6. Music
  • Python之赋值语句(多重赋值和交换赋值)
  • 网络协议七 应用层 HTTP 协议
  • uniapp vue 在适配百度小程序平台动态:style
  • 【最小生成树】(二) Kruskal 算法
  • haproxy最强攻略
  • XetHub 加入 Hugging Face!
  • 在编程学习的海洋中,如何打造高效的知识宝库
  • string详解(1)
  • Linux云计算 |【第二阶段】NETWORK-DAY4
  • amazon linux使用密码登录或者root登陆
  • 集智书童 | CNN 与 Transformer 的强强联合:AResNet-ViT在图像分析中的优势 !
  • Ubuntu基础使用指南
  • 怎样才算精通 Excel?
  • 怎么学算法并找到工作
  • 【实时建图】MapTR(1)------ 论文详解
  • 通用Builder工具类
  • 开源免费的海报设计器vue-fabric-editor
  • 【学习笔记】Day 4 - Day 5
  • MySQL数据分析进阶(十四)保护数据库