python+appium自动化测试-pytest+allure测试报告(一)

来自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.使用安装包安装

  • allure官网下载:
image.png
  • allure2下载下来是一个zip的压缩包,我们要解压至自己的文件目录下(可解压放至项目的测试用例下或python安装目录下),自己可找到文件即可。
  • 打开allure2目录,找到bin目录,复制bin文件目录, 然后进行环境变量的配置,设置环境变量的目的就是让系统无论在哪个目录下都可以运行allure2。
  • 环境变量设置:(桌面——我的电脑——右键属性——高级系统配置——环境变量——系统变量——Path——编辑环境变量——把我们上面复制的目录路径新增至环境变量中即可)
image.png
  • 配置好后,打开cmd终端,输入allure,出现以下帮助文档,就说明配置成功了。
image.png

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

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

运行环境:

  • 设备:U4AIUKFAL7W4MJLR
  • 测试app:微博APP(V10.12.0)Andriod版
  • 测试功能:账号密码登录

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

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

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

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

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png

三、测试报告由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文件,即为可视化报告,如下图所示

image.png

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

image.png

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

image.png

四、Allure相关注解

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

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

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

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

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

  • with allure.step:用于描述测试步骤,将会输出到报告中
  • allure.attach:用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等

代码如下:

# 手机账号密码登录测试用例
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结果如下:

image.png

2.@allure.description结果如下

image.png

3.@allure.step结果如下:

image.png

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

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容