zoukankan      html  css  js  c++  java
  • 我的pytest系列 -- pytest+allure+jenkins项目实践记录(1)

    一次偶然的面试机会,一位面试官给我的启发,为什么不用pytest代替unittest做自动化呢?你应该学学pytest,这个对你有好处!故事就从这里开始,我已经准备好酒了

    pytest是什么

    摘自:pytest官网
    The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.
    大致意思是:pytest框架更容易做测试框架,还有一大波好用的插件,大致就是不给你造轮子的机会,在商场里看到什么可以用的就可以拿什么,何乐而不为之,代码的世界真好,但还是要勇敢的面对真实世界☺

    pytest的好处

    01 更少的"模板"
    02 更详细的失败信息
    03 更灵活的fixture
    04 测试参数化
    05 小型的测试套
    06 集成CI
    07 支持插件
    08 活跃的社区
    传送门

    Allure是什么

    摘自官网
    Allure Framework is a flexible lightweight multi-language test report tool that not only shows a very concise representation of what have been tested in a neat web report form, but allows everyone participating in the development process to extract maximum of useful information from everyday execution of tests.
    Allure是一款开源的,专门用来展示测试结果的工具,目的是希望团队内部的每一个人都可以看到非常清楚的测试报告
    Allure可以支持许多的测试工具以及测试框架,下面内容为:Jenkins + pytest框架 + allure
    先上个小图:

    目录

    • 实现的效果展示
    • pytest的使用
    • allure+pytest如何搭配使用
    • 如何集成到jenkins
    • allure如何显示pytest测试日志

    效果展示

    pytest的使用
    1、使用pytest的参数化
    部分代码记录
    test_case.py测试文件中,
    参数使用pytest.mark.parametrize,直接读取json格式的测试数据对象文件,根据参数化的方式,发起单元测试

    @pytest.mark.parametrize(
        "url,method,headers,body,type,assertContent",
        json_return_dict(get_test_data("A_testcase.json")),
        ids=json_return_ids(get_test_data("A_testcase.json"))
    )
    def test_fun1(url,method,headers,body,type,assertContent):
        logging.info("发起{0}请求,请求路径:{1}".format(method, url))
        if method == "GET":
            req = requests.get(url)
            response = req.content
            logging.info("响应结果:{0}".format(response))
            assert True
    
    

    allure+pytest如何搭配使用
    1、需要安装下载模块
    pip install allure-pytest

    2、运行测试

    运行命令:pytest -s -v -q test_case.py --capture=no --alluredir=./report
    ./report 表示生成allure报告存放的目录,生成的文件可能看不懂,但需要allure-commandline命令运行就能生成对应的测试报告

    下载并安装allure-commandline工具包
    使用官网下载安装包传送门1使用npm方式下载传送门2

    运行生成好看的报告
    命令:allure generate report -o ./allure-result
    allure generate report -o ./allure-result --clean
    --clean 每次生成清空掉上一次生成的报告记录

    三、如何集成到jenkins (配置篇--pipeline方式)

    前提是:jenkins需要安装支持allure的插件,步骤:

    1. 在jenkins插件网站上下载allure插件最新版本:http://mirrors.jenkins-ci.org/plugins/allure-jenkins-plugin/
    2. 登录Jenkins,在系统管理-> 插件管理 -> 高级 -> 上传插件,进行安装

      上传成功并安装,看到出现一个黄色的球表示已安装成功,这个时候需要把Jenkins重启即可使用啦

    1、构建一个pipeline工程,Jenkins->新建任务->创建一个pipeline工程

    2、pipeline脚本编写一个执行pytest的测试步骤,和一个构建完成后的post动作(pipeline的基础语法,小编建议读者可以自行学习Jenkins2-pipeline基础语法)
    上代码

    pipeline {
        agent any
        stages {
            stage('name1'){
                steps{
                    
                    bat label: '', script: """
                    cd api-collection-test\trunk
                    pytest
                    """
                }
                
            }
        }
        post {
            always{
                allure includeProperties: false, jdk: '', results: [[path: 'api-collection-test\trunk\report']]
            }
        }
    }
    

    解释:

    1. api-collection-test runk是我本是jenkins,workspace工作空间的相对的工程目录
    2. api-collection-test runk eport是allure生成的原始报告文件的目录,workspace工作空间的相对目录
  • 相关阅读:
    Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
    android 网络异步加载数据进度条
    在WebView中加载HTML页面时显示进度对话框的方法
    Java基础知识总结之IO流
    计算机网络之网络协议
    Java中hashCode的作用
    一篇很好的学习查看Java源代码的文章
    JavaScript 客户端JavaScript之 脚本化文档
    JavaScript 超类与子类 继承
    JavaScript 类、构造函数、原型
  • 原文地址:https://www.cnblogs.com/yangsun/p/13289414.html
Copyright © 2011-2022 走看看