IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> python+appium自动化测试-参数化设置 -> 正文阅读

[开发测试]python+appium自动化测试-参数化设置

来自APP Android端自动化测试初学者的笔记,写的不对的地方大家多多指教哦。(所有内容均以微博V10.11.2版本作为例子)

在自动化测试用例执行过程中,经常出现执行相同的用例,但传入不同的参数,导致我们需要重复的写用例,这样会使我们的用例变得很长,冗余,很多地方需要编码。参数化可以通过修改传入的参数,从而让相同步骤的用例可以多次执行,对测试用例进行迭代调用。

参数化设置

一:使用装饰器实现参数化设置

参数化需要用到pytest的装饰器:@pytest.mark.parametrize()

方法:parametrize(argnames, argvalues, indirect=False, ids=None, scope=None)

parametrize参数的作用

上栗子,所有内容均已微博的账号密码登录作为例子

1.传入一个参数,一个参数对应一个数值

import pytest

class TestAccountLogin:

    # 参数化:传入一个参数,一个参数对应一个值
	@pytest.mark.parametrize("account", ["123123231321313"])
    def test_one(self, account):
        pwd = "asdfgh"
        self.account_login_page.input_account_pwd(account, pwd)
        print("\na的值:", account)

运行结果为:

在这里插入图片描述

2.传入两个参数,一个参数对应一个数值

import pytest

class TestAccountLogin:

	# 参数化:传入两个参数,一个参数对应一个值
	@pytest.mark.parametrize("account, pwd", [
        ("123123231321313", "asfgh")
    ])
    def test_one(self, account, pwd):
        self.account_login_page.input_account_pwd(account, pwd)
			print("\naccount的值:", account, "\npwd的值:", pwd)

运行结果为:

在这里插入图片描述

3.传入两个参数,一个参数对应多个数值

import pytest

class TestAccountLogin:

	# 参数化:传入两个参数,一个参数对应两个值
    @pytest.mark.parametrize("account, pwd", [
        ("123123231321313", "asdfgh"),
        ("12345645612", "123123")
    ])
    def test_one(self, account, pwd):
        self.account_login_page.input_account_pwd(account, pwd)
			print("\naccount的值:", account, "\npwd的值:", pwd)

运行结果为;

在这里插入图片描述

注意:@pytest.mark.parametrize()装饰器的第一个参数是字符串的形式来表示用例函数的参数,第二个参数以列表或元组的形式传递测试数据,且装饰器的参数与传入用例函数中的参数是一致的。

4.要获得多个参数化参数的所有组合,可以堆叠 parametrize装饰器

import pytest

class TestAccountLogin:
    # 所有参数的组合
    @pytest.mark.parametrize("account", ["123123123123", "1456456456456", "1789789789789"])
    @pytest.mark.parametrize("pwd", ["we", "you", "he"])
    def test_one(self, account, pwd):
        self.account_login_page.input_account_pwd(account, pwd)
        print("\naccount的值:", account, "\npwd的值:", pwd)

运行结果为:

在这里插入图片描述

注意:如上图,可知所有参数的组合是将参数1的数据分别于参数2的所有数据进行组合配对

二:参数化读取内部列表数据

在测试类中建立数据列表,存放参数对应的数据。这种方法将每个测试类中涉及到的参数数据都写在类的内部,在运行时可以快速方便的修改参数数据。

import pytest

# 建立数据列表,存放传入参数对应的数据
data = [("w124hhh77", "111"),
        ("q123457gg", "222"),
        ("rdde54sds", "333")
       ]

class TestAccountLogin:
    # 参数化数据读取内部列表数据
    @pytest.mark.parametrize("account, pwd", data)
    def test_one(self, account, pwd):
        self.account_login_page.input_account_pwd(account, pwd)
        assert self.account_login_page.get_bounced_context() == "你尚未注册微博,是否立即注册"

运行结果为:

在这里插入图片描述

三:参数化读取自外部yaml文件

使用参数化读取外部yaml文件,只需要维护数据文件,不需要在代码中改动数据,就可以动态的增加新的测试用例数据。

要读取外部的yaml文件,需要先安装yaml的包,命令行输入:pip install pyyaml,安装成功后如下图所示。在PyCharm中安装的话,是在File→setting,搜索pytest intrepreter,点击“+”号,搜索PyYAML,安装即可。

在这里插入图片描述

首先在工程目录(即测试类外部)下创建一个.yaml文件

在这里插入图片描述

在yaml文件中设置传入的参数对应数值

在这里插入图片描述

测试类中实现参数化读取外部yaml文件

import pytest
import yaml

class TestAccountLogin:
    # 在初始化前面先获取yaml文件
    account_data = yaml.safe_load(open("E:\\study\\Fork\\WeiboDemo\\Weibo\\data\\account_login.yaml", "r"))
    print(account_data)

    # 参数化数据读取外部文件yaml
    @pytest.mark.parametrize("account, pwd", account_data)
    def test_two(self, account, pwd):
        self.account_login_page.input_account_pwd(account, pwd)
        assert self.account_login_page.get_bounced_context() == "你尚未注册微博,是否立即注册"

运行结果为:

在这里插入图片描述

这边在打开yaml文件时使用相对路径会出现No such file or directory: 'account_login.yaml‘的错误,需要使用绝对路径,不知道是什么原因,大神有空的话可以帮忙提点下吗?谢谢!!!

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:41:37  更:2021-11-20 18:42:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:45:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码