python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

强烈推荐python自动化学习网站–白月黑羽(http://www.byhy.net/tut/auto/selenium/01/)
我不是打广告, 是真的讲解的非常好!!!!网站文字内容+B站视频,涵盖了python自动化的几乎所有主要内容,见下图

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

另一个学习pytest的好习惯就是看它的 官方文档
https://docs.pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run

另外,如果想要我手上的这个练习项目的,可以在底下评论,我发你

言归正传,首先看下pytest自动化是怎么设计的,也就是 目录结构是怎么样的,直接看图吧

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

debug.py是我在写用例的时候用来调试的代码的,可忽略

然后就是写代码啦,这里就不赘述了,直接贴代码了
模块一:写公共方法,这里全部以登录页面为例,这里只写了错误登录的方法,建议如果正常登录,另写一个登录成功的方法

"""
公共方法模块
lib.public_methods.py
"""
from selenium import webdriver
import time

def login(username, password):
    """页面登录, 返回错误信息"""
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get("http://localhost/admin.php")

    if username is not None:
        driver.find_element_by_xpath('//input[@name="username"][@id="username"]').send_keys(username)

    if password is not None:
        driver.find_element_by_css_selector('#password[name="password"]').send_keys(password)

    driver.find_element_by_css_selector(".admin-btn").click()
    time.sleep(3)

    faults_text = []

    fault_text = driver.find_element_by_css_selector('span#username_msg').text
    faults_text.append(fault_text)

    fault_text = driver.find_element_by_css_selector('span#password_msg').text
    faults_text.append(fault_text)

    driver.quit()

    for fault_text in faults_text:
        if fault_text != '':
            return fault_text

模块二:写用例

"""
存放测试用例
cases/登录/test_错误登录.py
"""
from lib.public_methods import login

class Test_错误登录:
    """学啊网页面登录的测试用例"""

    def test_001(self):
        """不输入登录账号,输入正确的密码"""
        fault_text = login(username=None, password='admin')
        assert fault_text == "帐号或密码不能为空"

    def test_002(self):
        """输入正确的账号,不输入密码"""
        fault_text = login(username='admin', password=None)
        assert fault_text == "帐号或密码不能为空"

    def test_003(self):
        """输入不正确的账号,输入正确的密码"""
        fault_text = login(username='adminfljalsdfjlasdjflasjflasdjfla', password='admin')
        print(fault_text)
        assert fault_text == "密码错误"

模块二数据驱动
用方法装饰器 @pytest.mark.parametrize()

"""
存放测试用例---数据驱动
cases/登录/test_错误登录.py
"""
from lib.public_methods import login
import pytest

class Test_错误登录:
    """学啊网页面登录的测试用例"""
    @pytest.mark.parametrize('username, password, fault_text', [(None, "admin", "帐号或密码不能为空"),
                                                                ("admin", None, "帐号或密码不能为空"),
                                                                ("admin1212", "admin", "密码错误")
                                                                ]
                             )
    def test_001_to_005(self, username, password, fault_text):
        """不输入登录账号,输入正确的密码"""
        fault_text = login(username=username, password=password)
        assert fault_text == fault_text

用例写完了,接下来 执行用例。和unittest框架不同,pytest好像不需要特意创建一个runner模块用来创建测试套件,直接在命令行执行就行

我在Windows系统上执行的,先输入cmd进入命令行,然后进入测试项目的根目录(我的根目录叫pytest),接下来输入命令 python -m pytest -s -v –html=login_report.html

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多
简单解释一下这个命令:
python -m: 通过python执行.py文件
pytest: 执行pytest框架写的自动化用例(会自动找以test_开头的模块、Test_开头的类、test_开头的用例,也可以手动指定要执行的对象,详情不赘述)
-s: 显示代码中print的内容
-v: 显示执行的细节(不知道我这为啥没显示,,后续再研究)
–html=login_report.html:生成名字为login_report的HTML格式的测试报告

附上测试报告截图

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

Original: https://blog.csdn.net/weixin_43655830/article/details/117888426
Author: iiiisolation
Title: python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/773042/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring5完整版详解

    1、Spring 1.1简介 2002,首次退出来Spring框架的雏形:interface21框架 Spring框架即以interface21框架为基础,经过重新设计,并不断丰富…

    Python 2023年6月9日
    062
  • 爬虫系列:在 Python 中用 Selenium 执行 Javascript

    Selenium 是一个强大的网络数据采集工具,其最初是为网站自动化测试而开发的。近几年,它还被广泛用于获取精确的网站快照,因为它们可以直接运行在浏览器上。Selenium 可以让…

    Python 2023年6月10日
    074
  • Opengl ES之FBO

    FBO介绍 FBO帧缓冲对象,它的主要作用一般就是用作离屏渲染,例如做Camera相机图像采集进行后期处理时就可能会用到FBO。假如相机出图的是OES纹理,为了方便后期处理,一般先…

    Python 2023年10月20日
    031
  • OSPF的五种报文

    OSPF的五种报文 Hello报文 DD(Database Description)数据库描述报文 LSR(LinkState Request)链路状态请求报文 LSU(LinkS…

    Python 2023年6月10日
    0158
  • 自动化办公:手机号码提取器,使用正则表达式轻松提取文本文件中的手机号码

    关于手机号码的提取,其实真正有用的部分就是re模块提供的正则表达式。使用正则表达式就能轻松地匹配到手机号码,由于功能比较简单这次并没有采用UI界面的方式来实现该功能。 【阅读全文】…

    Python 2023年11月2日
    053
  • Python+Appium【第六章】学习Pytest/配置Allure报告

    Pytest介绍与安装 * 什么是Pytest – 编写要求/规范 fixture – 设置fixture 设置fixture作用范围 fixture传参适…

    Python 2023年9月10日
    044
  • pygame的freetype模块

    pygame.freetype 增强的pygame模块,用于加载和渲染计算机字体 pygame.freetype模块是pygame.font的替代品。它具有原始模块的所有功能,以及…

    Python 2023年9月22日
    050
  • 【Python画蜘蛛侠】你的DNA动了吗?

    蜘蛛侠(Spider-Man)即彼得·帕克(Peter Parker),是美国漫威漫画旗下超级英雄。由编剧斯坦·李和画家史蒂夫·迪特科联合创造,初次登场于《惊奇幻想》(Amazin…

    Python 2023年9月19日
    065
  • 谣言检测()——《Debunking Rumors on Twitter with Tree Transformer》

    2.1 Token-Level Tweet Representation Transformer encoder 框架: 给定一条表示为 word sequence $x_{i}=…

    Python 2023年10月19日
    033
  • 第二十九天&pytest

    前提:需要安装pytest和pytest-html(生成html测试报告)在pycharm中安装两个插件pip install pytest 和 pip install pytes…

    Python 2023年9月12日
    069
  • Numpy图解(三)–高维数组

    目录 高维数组 创建数组 高维数组运算 连接函数hstack、vstack和dstack 堆叠函数concatenate 求和函数einsum 高维数组 创建数组 通过重排一维向量…

    Python 2023年8月27日
    043
  • 6000字 “保姆级” 教程 | 讲述Pandas库的数据读取、数据获取、数据拼接、数据写出!

    1. pandas介绍 Pandas是一个强大的数据分析库,它的Series和DataFrame数据结构,使得处理起二维表格数据变得非常简单。 基于后面需要对Excel表格数据进行…

    Python 2023年8月17日
    0118
  • 10道Python面试题

    答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对…

    Python 2023年10月31日
    027
  • Numpy数组元素的访问

    访问数组元素 对数组而言,访问元素的方式可以通过切片和索引两种方式。在Numpy数据预处理库中,提供了许多索引,如整数索引、花式索引和布尔索引,我们可以通过这些索引我们可以实现一个…

    Python 2023年8月23日
    057
  • python迷宫小游戏

    一款基于 Python + Pygame + AI算法 的 迷宫小游戏(一)课题内容实现走迷宫。主要功能为界面显示、上下左右键的响应以及当前步数统计。通过该课题全面熟悉数组、字符串…

    Python 2023年9月18日
    055
  • 机器学习(一)——什么是机器学习

    1.什么是机器学习? 1.1 机器学习定义 机器学习的诞生来源于两个领域:1.人工智能(artificial intelligence)。ML是AI四象限中的一个(think op…

    Python 2023年10月26日
    037
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球