来自 APP Android 端自动化测试初学者的笔记,写的不对的地方大家多多指教哦

之前发布的 python+appium 自动化测试-pytest+allure 测试报告(一)这篇文章由于部分内容有误,修改并补充后现在重新发布

一、Allure 安装

1、pytest 和 allure 插件安装

pip install allure-pytest
pip install pytest

2、Allure 帮助文档

https://docs.qameta.io/allure/#_about

3、Allure 安装

a.scoop install allure
b.使用安装包安装

若后续有新版本,建议使用最新的版本

二、生成 json 格式的测试报告

运行环境:

方法一:在终端 (terminal),生成 json 格式测试报告

终端 (terminal) 输入以下内容,运行

pytest 运行的py文件 --alluredir=测试报告存放地址
例如
pytest add_weibo_test.py --alluredir=../report/json

运行测试用例,在测试报告存放位置会生成一份或多份 json 或 xml 格式的测试报告

方法二:在测试用例配置 Additional Arguments,生成 json 格式测试报告

1.选择需要运行的测试用例,右键点击 Create Run Configuration:"测试用例文件名 “

2.进入后在 Additional Arguments 输入:- -alluredir=生成的 json 格式测试报告存放的位置

3.设置完后,点击 APPLY→OK,在测试函数中运行测试文件

运行后在测试报告存放位置会生成一份或多份 json 或 xml 格式的测试报告

三、测试报告由 json 格式转换为 html 格式

在终端(terminal)转换

1.测试用例运行完成生成 json 格式的测试报告后,打开 terminal,输入命令:

allure generate ./report/ -o ./report/html --clean

./report/:表示执行需要转换的文件所在的位置需要转换的文件在report文件夹中
./report/html:表示转换成功的html文件存放的位置即存放在report下的html文件夹中
--clean:表示清除之前的测试报告因为重复生成相同的测试报告会报错

注意:在 terminal 可以通过 cd 返回上一级或进入其它文件

2.执行完成后,在 report 文件夹下会生成一个 html 文件,在 html 目录下会生成 index.html 文件,即为可视化报告,如下图所示

3.打开 html 文件,右键点击 index.html 文件,选择 open in Broswer,选择 Chrome 浏览器,如下图

4.谷歌浏览器打开后的测试报告图片呈现为下图:

四、Allure 相关注解

1. @allure.feature:用于描述被测试产品需求

2. @allure.story:用于描述 feature 的用户场景,即测试需求,与 feature 是父子关系

3. @allure.title:用户描述测试用例的标题,不设置默认为用例名称

4. @allure.description:用于对测试用例的一些附加描述

5. @allure.step:用于将一些通用的函数作为测试步骤输出到报告,调用此函数的地方会向报告中输出步骤

代码如下:

# 手机账号密码登录测试用例
import allure
import pytest
from common.init import AppStart

@allure.feature("这是测试feature")
class TestAccountPwd:
    def setup_class(self):
        self.account_login_page = AppStart.start().enter_account_login()

    @allure.story("story_one")
    @allure.title("title_one")
    def test_one(self):
        with allure.step("step--输入账号"):
            allure.attach("123123231321313", "账号")
            account = "123123231321313"
        with allure.step("step--输入密码"):
            pwd = "asdfgh"
            self.account_login_page.input_account_pwd(account, pwd)
        with allure.step("step--断言"):
            allure.attach("手机格式有问题,若非中国大陆手机号码请点击国际手机登录", "期望结果")
            assert self.account_login_page.get_bounced_context() == "手机格式有问题,若非中国大陆手机号码请点击国际手机登录"
            print("\naccount的值:", account, "\npwd的值:", pwd)

    @allure.story("story_two")
    @allure.title("title_two")
    @allure.step("这是测试step")
    def test_two(self):
        account = "w124hhh77"
        pwd = "asdfg"
        self.account_login_page.input_account_pwd(account, pwd)
        assert self.account_login_page.get_bounced_context() == "你尚未注册微博,是否立即注册"
        print("\naccount的值:", account, "\npwd的值:", pwd)

    @allure.story("story_three")
    @allure.title("title_three")
    def test_three(self):
        account = "hhhhhhhhh"
        pwd = "asdfg"
        self.account_login_page.input_account_pwd(account, pwd)
        assert self.account_login_page.get_bounced_context() == "你尚未注册微博,是否立即注册"
        print("\naccount的值:", account, "\npwd的值:", pwd)

    @allure.story("story_four")
    @allure.title("title_four")
    @allure.description("description")
    def test_four(self):
        account = "15059941156"
        pwd = "123123"
        self.account_login_page.input_account_pwd(account, pwd)
        assert self.account_login_page.get_account_pwd_tips() == "帐号或密码错误"
        print("\naccount的值:", account, "\npwd的值:", pwd)

    def teardown_class(self):
        AppStart.quit()

if __name__ == '__main__':
    pytest.main(["account_pwd_test.py"])

1.@allure.feature、@allure.story@allure.title结果如下:

2.@allure.description 结果如下

3.@allure.step 结果如下:

4.with allure.step 和 allure.attach 结果如下:


↙↙↙阅读原文可查看相关链接,并与作者交流