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自动化测试用例(一)相关推荐

  1. python做ui自动化_[python]RobotFramework自定义库实现UI自动化

    1.安装教程 环境搭建不多说,网上资料一大堆,可参考https://www.cnblogs.com/puresoul/p/3854963.html,写的比较详细,值得推荐.目前python3是不支持r ...

  2. python自动化框架pytest pdf_pytest+python下的UI自动化基础框架

    整体设计模式: config目录:存放一些公共的静态文件,如项目名称,配置文件等这些环境变量(可以用其他组件替换,如sql,主要能把配置文件的内容被程序识别). httptrquest目录:存放接口代 ...

  3. python安卓自动化实现方法_uiautomator +python 实现安卓UI自动化

    简单实例 注:安卓6.0以上的手机不会自动安装app-uiautomator.apk和app-uiautomator-test.apk,需要手动安装,否则报错ioerror RPC server no ...

  4. UI自动化框架如何设计及搭建?

    目录 UI自动化框架 自动化原则: 如何减少自动化维护成本? UI自动化框架优化方案:(在不增加维护成本前提下) UI自动化脚本可分为3种: 已经实现自动化的模块可以不做手工测试了吗? UI自动化公式 ...

  5. UI 自动化中的分层设计

    背景 2,3 年前更写过一些 UI 自动化的相关文章, 包括一些设计原则,怎么设计划分页面封装, 常用的设计模式等. 但是没有详细描述 UI 自动化中的分层理念, 赶上最近在新项目里做 UI 自动化测 ...

  6. Android手机QQ的UI自动化实践

    UI自动化 我们为什么要搞UI自动化 可能很多同学都有疑问:我们写了这么多单元测试,为什么还需要UI自动化测试呢? 按照测试金字塔理论,其实每种类型的测试都有自己的意义,UI自动化的意义就在于更贴近用 ...

  7. Web UI自动化测试之元素定位

    目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...

  8. 【自动化测试】推荐一款超好用的ui自动化工具--uiautomator2

    今天直接进入正文,给大家推荐一款超级好用的ui自动化工具 uiautomator2 正文来了 我将从以下几个方面,向大家介绍 uiautormator2,希望该项目的作者看到我的文章之后,可以请我喝杯 ...

  9. UI自动化平台(一)

    前言:最近萌生了做UI自动化平台的想法,以前做UI自动化都是直接脚本化的,也一直觉得UI改动一般都是很频繁,所以慢慢的脚本化的工作都放弃了,但是目前在公司,发现还是有点用的,公司的前辈也一直在完善脚本 ...

最新文章

  1. 建校百年,哈工大计算机学部成立!NLP专家刘挺挑大梁
  2. 微软职位内部推荐-Software Engineer II-Office Incubation
  3. java url连接,Java - 线程中的URL连接
  4. tomcat 软连接问题
  5. 基于鸿蒙Hi3861和华为云平台的烟雾报警器
  6. go的优势--链表与结构体使用
  7. SpringBoot文件上传异常之提示The temporary upload location xxx is not valid
  8. Qt总结之十七:QByteArray类型里含中文的数据解析出现乱码
  9. nginx.conf nginx设置用户权限
  10. [其他][转载]ACM知识点分类
  11. 京东方、立讯精密纷纷向苹果靠拢,再次撕下国产手机遮羞布
  12. C.就来谈谈深搜与广搜
  13. pyspark 读mysql数据_spark读mysql数据
  14. postgresql unsupported frontend protocol 1234.5680问题
  15. python音频频谱分析软件_SpectrumView(音频频谱分析软件)
  16. 树莓派书籍全方位推荐
  17. openGauss数据库源码解析系列文章——openGauss开发快速入门(一)
  18. FFmpeg问题梳理
  19. 做自适应网站时需要参考的设备分辨率有哪些
  20. 深富策略:山雨欲来风满楼 沪指放量滞涨

热门文章

  1. Data Augment Approavhes in Natural Language Processing
  2. 今日头条直播业务-服务端/客户端测试开发工程师
  3. java微服务占用内存过大怎么办
  4. windows下plsql安装
  5. 容易保:买错保险比不买更可怕!你的保险买对了吗?
  6. 或许是迄今为止第一篇讲解 fps 计算原理的文章吧
  7. python数据归一化处理方法_python测试数据怎么归一化
  8. win10 卸载干净 docker
  9. Kali--Nmap实战
  10. 不思议迷宫量子计算机,不思议迷宫教你苦修者冈布奥怎样炼成的