[python]pytest实现WEB UI自动化

前言:其实这篇写的是pytest的测试框架运用,实现自动化和https://www.cnblogs.com/Jack-cx/p/9357658.html 原理一致

1.为啥不用unittest

Pytest相对Unittest更加灵活一点,unittest需要写类继承unittest.TestCase类,pytest不需要可写可不写类,也支持生成html测试报告

2.创建工程

&对比上面robot的工程,增加一个PyUnit目录和report,这里主要放单元测试框架其他实现思路一致,report放执行后生成的html报告

3.新建测试用例

&可以看出单元测试框架命名规则风格其实都是一致的,调用“底层“写的一个方法去读execel运行测试用例

4.pytest运行用例规则

&深入研究请百度,下面只让你能独立写一个自动化工程的目的

1.文件已 test_开头 test_*.py

2.类已Test_开头 class Test_login()

3.方法已test_开头 def test_login()

5.初始化和清理的方法使用

  • fixture函数可以使用在测试函数中,测试类中,测试文件中以及整个测试工程中。
  • fixture支持模块化,fixture可以相互嵌套
  • fixture支持参数化
  • fixture支持unittest类型的setup和teardown

1)模块级(setup_module/teardown_module)开始于模块始末:在所有测试用例开始执行setup_module和所有用例执行结束后执行teardown_module

2)类级(setup_class/teardown_class)开始于类的始末:在当前测试类的开始与结束执行

3)类里面的(setup/teardown)(运行在调用函数的前后)

4)功能级(setup_function/teardown_function)开始于功能函数始末(不在类中):用于每个测试用例开始执行时执行setup_function和在每个用例执行结束后执行teardown_function

5)方法级(setup_method/teardown_method)开始于方法始末(在类中):在每个测试方法开始与结束执行

 

&本次以UI自动化为例,只用到的setup_method每次用例执行先调用浏览器打开网址

细节可参考:https://www.cnblogs.com/ranxf/p/7766229.html讲的比较细

6.多种运行测试用例

&运行目录下所有测试用例

Dos下 到Pyunit下执行 py.test –html=需要生成的report路径

&运行执行某个py文件里的用例

Dos下 到Pyunit下执行 py.test  文件名.py –html=需要生成的report路径

&运行类里的某个方法

pytest -v test_a.py::TestClass::test_method

&运行指定的类中所有方法

pytest -v test_a.py::TestClass

&组合运行

pytest -v test_a.py::TestClass test_b.py:: test_method

7.断言

简单断言,用例执行完返回一个True或False assert==True,是True则通过,否则失败

原文地址:https://www.cnblogs.com/Jack-cx/p/9357680.html

时间: 2024-10-07 11:38:06

[python]pytest实现WEB UI自动化的相关文章

Python Selenium 搭建Web UI自动化

Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python 下载Chrome Driver 点击下载chromedriver 将驱动放入Python根目录下 安装PyCharm 转载:安装教程 安装Selenium 打开PyCharm 新建Python File 点击面板底部 Terminal 输入pip install selenium 安装.pip li

为什么要做自动化测试、web/UI 自动化条件和使用范围

一.为什么进行自动化测试? 缩短测试周期 避免人为出错 测试信息存储(自动化代码) 轻易获取覆盖率 其他 二.web/UI 自动化条件和使用范围 1. 前提条件 手工测试已经完成,后期在不影响进度的前提下逐渐实现自动化 项目周期长,重复性的工作都交给机器去实现 需求稳定,项目变动不大 自动化测试脚本复杂度比较低 可重复利用 2. 使用自动化测试的场景 频繁的回归测试 冒烟测试 传统行业需求变动不大,应用频繁 性能测试 *******请大家尊重原创,如要转载,请注明出处:转载自:https://w

python WEB UI自动化在日期框中动态输入当前日期

要在日期框中输入当前日期,如下图 代码为 本想用最简单的方法,直接用sendkeys发送当前日期,如下: current_time=time.strftime('%Y-%m-%d',time.localtime(time.time())) driver.find_element_by_id("id_start").send_keys(current_time) 但是在实际操作时,发现发送完成后,写入的不是我的东西,而是又多了一个日期,不知道为什么.有空研究下. 就用js来操作,直接给出

这两个月内 web UI 自动化的感悟

1.我们的后台不稳定(所以这里建议还是选一个稳定的后台) 2.对我们的后台,我遇到过一个问题就是,如果添加商品成功,我该如何去验证商品保存成功 A.我想到的第一种方法是 查询数据库(可这还是webUI吗?) B.正好添加成功的数据会在第一页显示出来,所以我对首页的第一条数据做了判断 整个测试做下来的感觉是  对公司实用性不大,但是对自身肯定是好的,起码提高了自己写代码的水平以及自己知道了整个自动化UI测试的流程 我在看完虫师的 http://www.cnblogs.com/fnng/p/5410

[原创] Web UI自动化应用测试框架实践 - 概览

之前为我们部门做的一个UI框架.不能纯粹解读为框架,主要是做了一些简单的分层设计,以解决稳定性.降低复杂性.提升可维护性以及快速构建测试用例等实际问题. 主要部分:1. 测试数据.主要提供测试类库需要用到的数据,前端做到数据驱动.2. 测试服务.测试服务类主要提供一组API,达到重用的目的.3. 页面封装.对具体的Web页面进行抽象和封装,提供统一的接口,降低逻辑的编写门槛,组件重用以及更好的可维护和可读性. 4. Selenium Web Driver.底层用的WebDriver.

Web UI自动化(ubuntu系统,python3.6)

在ubuntu系统中搭建python3.6.4+selenium+chrome,实现无界面上运行web前端自动化测试 一.ubuntu系统16.04自带了python2.7和python3.5 ,需要安装python3.6.4步骤: 1.使用 wget 命令下载 Python3.6.4 安装包:wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz 2.使用 tar 命令对 Python3.6.4 进行解压:tar zxvf P

[原创] Web UI 自动化日期控件的处理

序 在构建自动化套件的过程中,日期操作是一件很重要也很频繁的事情.有的日期控件的div层级结构复杂,同一个类型的日期控件在多个子系统中的表现形式也大相径庭.多数工程师为了避免重复的工作,会封装抽象一个方法或公共的库,还有部分会封装成单独的日期类库. 控件 下面是去啊的日期控件 下面是相关的HTML 当然,有的日期控件元素的id为对应的日期. 代码逻辑 针对这种双日期的格式,我们如何在代码中进行处理输入? 1.      输入目标日期. 2.      判断目标日期与当前日期的差值 -      

Selenium系列(十四) - Web UI 自动化基础实战(1)

如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式 目的是为了掌握所学的Selenium基础 实战题目 访问:https://m.weibo.cn/ 点击:大家都在搜 点击:微博热搜榜

Selenium系列(十五) - Web UI 自动化基础实战(2)

如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式 目的是为了掌握所学的Selenium基础 实战题目 访问:https://www.toutiao.com/ 获取到下图所有黑框里的内容