pythonui自动化如何设计用例_PyTest管理UI自动化测试用例(一)
1、如下代码是对日报的增加、查看、修改和删除:(文件名称:test_dailyreport.py)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
caseName:工作日报
'''
# import unittest
import pytest
from businessView.daily_report import DailyReportPage
from baseView.browser_view import Browser
from common.get_configInfo import get_config
from businessView.login import LoginView
from common.get_log import get_log
log = get_log()
save_data = [("2019-07-03", "测试数据01", "0")]
update_data = [("2019-07-01", "测试数据-修改", "0"), ]
class TestDailyReport(object):
'''
1、用fixture在所有用例开始前初始化测试对象、在所有用例结束后销毁测试对象
2、yield是用于生成器,与return不同!所有用例执行完后,会执行yield后面的代码,
无论用例是否执行成功,该代码都会执行(相当于teardown)
3、在一个文件中,用例的执行顺序是从上到下的
'''
@pytest.fixture(scope="class")
def init_dailyreport(self):
# 打开浏览器和url
browser = Browser()
driver = browser.open_browser()
# 登录(以下用例的前置条件一致,均需要登录,所以放到该方法中)
username = get_config("accountInfo", "username")
password = get_config("accountInfo", "password")
lv = LoginView(driver)
lv.login_action(username, password)
lv.into_report_page()
# 初始化工作日报界面类
drp = DailyReportPage(driver)
yield drp
# 以下相当于teardown代码,不管用例执行成功与否,该代码都会执行,完美
log.info("Close the browser.")
# quit关闭浏览器后,会自动删除临时文件夹,不要用close
driver.quit()
'''
1、用例调用fixture的返回值,直接把函数名称当做变量名称,比如:setup_teardown
2、测试用例参数化用pytest.mark.parametrize,注意测试数据的格式
3、pytest.mark.usefixtures只能用于没有返回值的fixture
'''
# 暂存日报用例
@pytest.mark.parametrize("date,content,hours", save_data)
def test_save(self, init_dailyreport, date, content, hours):
log.info("******** 用例名称:暂存日报 ********")
init_dailyreport.save(date, content, hours)
@pytest.mark.add
# 查看日报用例
def test_check(self, init_dailyreport):
log.info("******** 用例名称:查看日报 ********")
init_dailyreport.check()
# 修改日报用例
@pytest.mark.parametrize("update_date, update_content, update_hours", update_data)
def test_update(self, init_dailyreport, update_date, update_content, update_hours):
log.info("******** 用例名称:修改日报 ********")
init_dailyreport.update(update_date, update_content, update_hours)
# 删除日报用例
def test_delete(self, init_dailyreport):
log.info("******** 用例名称:删除日报 ********")
init_dailyreport.delete()
if __name__ == "__main__":
# 运行该文件中所有用例
pytest.main(['-s', "test_dailyreport.py"])
# 运行单个用例
# pytest.main(['-s', "test_dailyreport.py::TestDailyReport::test_save"])
# 运行某些被标记的用例
# pytest.main(['-s', "test_dailyreport.py", "-m=add"])
# 运行某些未被标记的用例(除了标记为add之外的用例)
# pytest.main(['-s', "test_dailyreport.py", "-m=not add"])
# 该命令表示运行该文件所在路径下的所有测试文件
# pytest.main()
2、fixture的应用:
1)类似于unittest中的setUp和tearDown函数的应用,用来初始化测试对象和销毁测试对象;
2)用scope来控制fixture的作用范围:
class代表作用于该类中的所有用例。即该类中所有用例执行前和执行后;
function代表每个用例执行前和执行后;
还有module和session,使用时在网上查找使用方法即可
3)其中yeild不同于return,yeidl返回了实例化的对象drp,供其他测试用例调用;
4)yeild后面放置的代码相当于tearDown函数中代码,不管用例执行是否成功,在用例执行结束后均会执行该代码
3、用例调用fixture的返回值:直接把函数名作为参数和变量使用
4、使用pytest.mark.parametrize来管理测试用例数据,第一个参数是用例中参数列表,第二个参数是参数对应的值
5、运行用例的多种方式:
1)运行该文件中所有用例
pytest.main(['-s', "test_dailyreport.py"])
2)运行单个用例(类中的某个函数)
pytest.main(['-s', "test_dailyreport.py::TestDailyReport::test_save"])
3)用mark标记用例,并执行这些被标记的用例
pytest.main(['-s', "test_dailyreport.py", "-m=add"])
pytest.main(['-s', "test_dailyreport.py", "-m=check or add"])
4)执行除了被标记之外的其他用例
pytest.main(['-s', "test_dailyreport.py", "-m=not add"])
5)运行该文件所在路径下的所有测试文件,比如test_login.py与该文件在同一路径下,则如下命令会执行这两个文件中所有用例
pytest.main()
6、命名规则:
1)文件名:test_*.py或者*_test.py
2)类:Test开头
3)函数:test_开头
pythonui自动化如何设计用例_PyTest管理UI自动化测试用例(一)相关推荐
- python做ui自动化_[python]RobotFramework自定义库实现UI自动化
1.安装教程 环境搭建不多说,网上资料一大堆,可参考https://www.cnblogs.com/puresoul/p/3854963.html,写的比较详细,值得推荐.目前python3是不支持r ...
- python自动化框架pytest pdf_pytest+python下的UI自动化基础框架
整体设计模式: config目录:存放一些公共的静态文件,如项目名称,配置文件等这些环境变量(可以用其他组件替换,如sql,主要能把配置文件的内容被程序识别). httptrquest目录:存放接口代 ...
- python安卓自动化实现方法_uiautomator +python 实现安卓UI自动化
简单实例 注:安卓6.0以上的手机不会自动安装app-uiautomator.apk和app-uiautomator-test.apk,需要手动安装,否则报错ioerror RPC server no ...
- UI自动化框架如何设计及搭建?
目录 UI自动化框架 自动化原则: 如何减少自动化维护成本? UI自动化框架优化方案:(在不增加维护成本前提下) UI自动化脚本可分为3种: 已经实现自动化的模块可以不做手工测试了吗? UI自动化公式 ...
- UI 自动化中的分层设计
背景 2,3 年前更写过一些 UI 自动化的相关文章, 包括一些设计原则,怎么设计划分页面封装, 常用的设计模式等. 但是没有详细描述 UI 自动化中的分层理念, 赶上最近在新项目里做 UI 自动化测 ...
- Android手机QQ的UI自动化实践
UI自动化 我们为什么要搞UI自动化 可能很多同学都有疑问:我们写了这么多单元测试,为什么还需要UI自动化测试呢? 按照测试金字塔理论,其实每种类型的测试都有自己的意义,UI自动化的意义就在于更贴近用 ...
- Web UI自动化测试之元素定位
目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...
- 【自动化测试】推荐一款超好用的ui自动化工具--uiautomator2
今天直接进入正文,给大家推荐一款超级好用的ui自动化工具 uiautomator2 正文来了 我将从以下几个方面,向大家介绍 uiautormator2,希望该项目的作者看到我的文章之后,可以请我喝杯 ...
- UI自动化平台(一)
前言:最近萌生了做UI自动化平台的想法,以前做UI自动化都是直接脚本化的,也一直觉得UI改动一般都是很频繁,所以慢慢的脚本化的工作都放弃了,但是目前在公司,发现还是有点用的,公司的前辈也一直在完善脚本 ...
最新文章
- 建校百年,哈工大计算机学部成立!NLP专家刘挺挑大梁
- 微软职位内部推荐-Software Engineer II-Office Incubation
- java url连接,Java - 线程中的URL连接
- tomcat 软连接问题
- 基于鸿蒙Hi3861和华为云平台的烟雾报警器
- go的优势--链表与结构体使用
- SpringBoot文件上传异常之提示The temporary upload location xxx is not valid
- Qt总结之十七:QByteArray类型里含中文的数据解析出现乱码
- nginx.conf nginx设置用户权限
- [其他][转载]ACM知识点分类
- 京东方、立讯精密纷纷向苹果靠拢,再次撕下国产手机遮羞布
- C.就来谈谈深搜与广搜
- pyspark 读mysql数据_spark读mysql数据
- postgresql unsupported frontend protocol 1234.5680问题
- python音频频谱分析软件_SpectrumView(音频频谱分析软件)
- 树莓派书籍全方位推荐
- openGauss数据库源码解析系列文章——openGauss开发快速入门(一)
- FFmpeg问题梳理
- 做自适应网站时需要参考的设备分辨率有哪些
- 深富策略:山雨欲来风满楼 沪指放量滞涨