精华内容
下载资源
问答
  • Python自动化报告美化pytest+Allure初体验胖友圈经常有各种小姐姐发励志减肥的状态,印象很深的一句话是,没有人愿意透过你粗糙的外表,没有人愿意透过你邋遢的外表去触及你美好的心灵,在自动化测试中也是一样,...

    f144742569e459c731e46bb79195e531.png

    Python自动化报告美化pytest+Allure初体验ac358af86190c1952a855b454051e44b.png

    胖友圈经常有各种小姐姐发励志减肥的状态,印象很深的一句话是,没有人愿意透过你粗糙的外表,没有人愿意透过你邋遢的外表去触及你美好的心灵,在自动化测试中也是一样,漂亮的报告在自动化测试框架中可以起到画龙点睛的作用。

    报告接触过不少,之前看了Kitty老师写的Java自动化测试集成Allure美化报告,感觉报告很漂亮,于是尝试着将其应用到python中。

    既然要生成报告,那我们首先需要引入测试框架,pytest是python的第三方测试框架,是基于unittest的扩展框架。

    根据pytest的官方网站介绍,它具有如下特点:

    • 1、简单灵活,容易上手,文档丰富;

    • 2、支持参数化,可以细粒度地控制要测试的测试用例;

    • 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);

    • 4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;

    • 5、测试用例的skip和xfail处理;

    • 6、可以很好的和CI工具结合,例如jenkins

    首先我们需要在python环境上安装pytest库,这里建议通过pip安装:pip install pytest

    bc2471786e32f4f8381b98130df95b7d.png

    然后编写一个简单的pytest测试用例,这里我们需要满足以下条件

    • 测试文件以test_开头(以_test结尾也可以)

    • 测试类以Test开头,并且不能带有 init 方法

    • 测试函数以test_开头

    • 断言使用基本的assert即可

    编写简单代码如下,test_sample.py

    import pytest

    class TestClass(object):

       @pytest.fixture(scope='function')

       def setup_function(request):

           def teardown_function():

               print("teardown_function called.")

           request.addfinalizer(teardown_function)  # 此内嵌函数做teardown工作

           print('setup_function called.')

       @pytest.fixture(scope='module')

       def setup_module(request):

           def teardown_module():

               print("teardown_module called.")

           request.addfinalizer(teardown_module)

           print('setup_module called.')

       @pytest.mark.website

       def test_1(setup_function):

           print('Test_1 called.')

       def test_2(setup_module):

           print('Test_2 called.')

       def test_3(setup_module):

           print('Test_3 called.')

           assert 2==1+1              # 通过assert断言确认测试结果是否符合预期

    调用pytest,只需要在命令行里定位到测试文件所在路径,然后运行pytest即可

    3f84aa5f15c7b98d3ce4b6b1de3842c9.png

    接下来,我们引入Allure 来生成漂亮的报告。

    同样,也是通过pip来安装allure插件:

    pip install allure-pytest

    ed5682dd685d4115d07d5f4b0d59e221.png

    接着下载allure:2.7.0版本

    https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.7.0/allure-2.7.0.zip

    解压之后,将allure/bin目录添加到环境变量path中:

    23756d8b14fa609850ef9ebbe83862c9.png

    接着,在测试脚本中,添加allure特性,直接看下面的脚本,我通过在脚本中添加注释的方式给大家解释allure特性的用途。

    import pytestimport allure@allure.feature('测试用例功能')  # feature定义功能class TestClass(object):    @pytest.fixture(scope='function')    def setup_function(request):        def teardown_function():            print("teardown_function called.")        request.addfinalizer(teardown_function)  # 此内嵌函数做teardown工作        print('setup_function called.')    @pytest.fixture(scope='module')    def setup_module(request):        def teardown_module():            print("teardown_module called.")        request.addfinalizer(teardown_module)        print('setup_module called.')    @allure.story('功能测试用例1')  # story定义用户场景    @pytest.mark.website    def test_1(setup_function):        print('Test_1 called.')    @allure.story('功能测试用例2')  # story定义用户场景    def test_2(setup_module):        print('Test_2 called.')    @allure.story('功能测试用例3')  # story定义用户场景    def test_3(setup_module):        print('Test_3 called.')        assert 2==1+1              # 通过assert断言确认测试结果是否符合预期

    运行pytest --alluredir ./result/去生成测试结果

    3b0a641671c20b08c7054ddfc928d781.png

    该目录下为测试结果

    bce238b9a2ce1c2b8772aeacfde62cea.png

    接下来,用allure generate ./result/ -o ./report/ --clean命令将测试结果生成测试报告

    2793125770fc338c7f2bc5e3072c2724.png

    该目录下为测试报告所在,直接打开该报告有点问题,我们需要在pycharm中通过右键点击用浏览器打开

    d72cc3646108fd762e7b89a6340652ca.png

    d5791e46f87d8efaaac98f0ab3e4cd58.png

    a85ce21faaae3e9b29c926da64dc012f.gif

    Bye~

    RECOMMEND推荐阅读

    面试官眼中的你们都在耍猴(软件测试篇)

    全链路压测那点事(一)

    测试人员的未来发展方向思考

    d4347fdac3971409f2368a4d314c5a3f.png

    6c0ed3f8658b584fa077c527aaca8fea.png

    嗨,你还在看吗?
    展开全文
  • 本文实例讲述了python自动化测试的过程,分享给大家供大家参考。具体代码如下:import unittest########################################################################class RomanNumeralConverter(object):""...

    本文实例讲述了python自动化测试的过程,分享给大家供大家参考。

    具体代码如下:

    import unittest

    ########################################################################

    class RomanNumeralConverter(object):

    """converter the Roman Number"""

    #----------------------------------------------------------------------

    def __init__(self, roman_numeral):

    """Constructor"""

    self.roman_numeral = roman_numeral

    self.digit_map = {"M":1000, "D":500, "C":100, "L":50, "X":10,

    "V":5, "I":1}

    def convert_to_decimal(self):

    val = 0

    for char in self.roman_numeral:

    val += self.digit_map[char]

    return val

    ########################################################################

    class RomanNumeralConverterTest(unittest.TestCase):

    """test class"""

    def test_parsing_millenia(self):

    value = RomanNumeralConverter("M")

    self.assertEquals(1000, value.convert_to_decimal())

    if __name__ == "__main__":

    unittest.main()

    程序运行效果如下:

    .

    ----------------------------------------------------------------------

    Ran 1 test in 0.000s

    OK

    此处注意三点:

    1. import unittest

    2. 测试类要继承unittest.Testcase

    3. main中调用 unittest.main()

    这里需要注意的是:测试类的是测试函数也以test开头。

    希望本文所述对大家的Python程序设计有所帮助。

    展开全文
  • 先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码对一个测试脚本必须存在哪些...

    0166b94f3aaacb323ef2a5bcd4c3072b.png

    先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码

    对一个测试脚本必须存在哪些内容,我认为若满足以下三点要求,就算一个合格的测试脚本了。

    1、测试用例的描述,包含测试目的,测试详细步骤,预期结果等

    2、简洁,易于阅读和维护的代码结构

    3、详细的运行LOG记录与测试报告

    所以很明显以上脚本结构上是不够完整的,测试执行人员可能都不知道这个脚本测的什么内容。改之

    根据用例表批量生成脚本

    我的用例管理表如下,xlsx的表格。以下内容是随便举的一个例子(可能测试用例写得不正确)

    76e051eaf554a7137a85adc5bebbc291.png

    代码实现的逻辑:解析用例管理表,生成测试脚本框架

    # !/usr/bin/env python
    #
    -*- coding:utf-8 -*-
    #
    !python3__author__ = "xxx""""自动化脚本生成工具"""import osimport xlrdimport time
    TestCaseName
    = ""
    TestCaseDescription
    = ""
    TestCasePreCondition
    = ""
    TestCaseStep
    = ""
    TestCaseExpectResult
    = ""
    TestEnvironment
    = ""
    TestScriptName
    = ""
    cur_path
    = os.getcwd()def scripts_template():
    testcases
    = os.path.join(cur_path, u"用例模板.xlsx")
    data
    = xlrd.open_workbook(r'%s' % testcases)
    table
    = data.sheet_by_index(0)
    n_rows
    = table.nrows
    n_cols
    = table.ncolsfor i in range(1, n_rows):
    TestCaseName
    = table.cell_value(i, 1)
    TestCaseDescription
    = table.cell_value(i, 2)
    TestCasePreCondition
    = table.cell_value(i, 3)
    TestCaseStep
    = table.cell_value(i, 4)
    TestCaseExpectResult
    = table.cell_value(i, 5)
    TestEnvironment
    = table.cell_value(i, 0)
    TestScriptName
    = "test_{0}".format(TestCaseName) #符合unittest测试用例定义的识别条件, 以"test"开头
    filename = os.path.join(cur_path, "{0}.py".format(TestScriptName))
    with open(filename,
    'w', encoding='utf-8') as out:
    out.write(
    '''# !/usr/bin/env python
    # -*- coding:utf-8 -*-
    """
    #-----------------------------------------------------------------------
    用例名称: {0}
    用例描述: {1}
    前置条件:
    {2}
    测试步骤:
    {3}
    预期结果:
    {4}
    测试环境: {5}
    作者:{6}
    日期:{7}
    #-----------------------------------------------------------------------
    """
    import unittest
    class {8}(unittest.TestCase):
    def setUp(self):
    #TODO 添加用例执行前置条件
    pass
    def testRun(self):
    #TODO 添加用例执行测试步骤
    pass
    def tearDown(self):
    #TODO 添加恢复测试环境操作
    pass
    if __name__ == '__main__':
    unittest.main()
    '''.format(TestCaseName, TestCaseDescription, TestCasePreCondition,
    TestCaseStep, TestCaseExpectResult, TestEnvironment,
    __author__,
    time.strftime(
    '%Y-%m-%d'), TestScriptName));print("generate scripts finished!")if __name__ == "__main__":

    scripts_template()

    运行一下以上测试脚本生成代码。生成的脚本如下:

     1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3  4 """ 5 #----------------------------------------------------------------------- 6 用例名称: case_01_01_01_01 7 用例描述: 测试天气提示刷新 8 前置条件: 9 打开天气APP10 测试步骤:11 1.后台设置今日天气为多云,查看App提示是否更新。12 预期结果:13 页面天气提示刷新为多云14 测试环境: Phone15 作者:xxx16 日期:2019-01-0817 #-----------------------------------------------------------------------18 """19 20 import unittest21 22 23 class test_case_01_01_01_01(unittest.TestCase):24 25     def setUp(self):26         #TODO 添加用例执行前置条件27         pass28 29     def testRun(self):30         #TODO 添加用例执行测试步骤31         pass32 33     def tearDown(self):34         #TODO 添加恢复测试环境操作35         pass36 37 if __name__ == '__main__':38     unittest.main()

    45902191770f6467397cea7b06abff5b.png

    7月份福利课来袭,心动就关注一下吧~

    上课地址:https://ke.qq.com/course/2769755?taid=9802833359160155&tuin=967526f

    39c2c32b9c93ba7babff7c562922fc81.png

    展开全文
  • 自动化测试概述—自动化测试脚本编写方法二课程介绍第一章-自动化测试概述:从本章开始,我们开始学习几个主流高级测试工具。我们会将课程分为自动化测试工具、性能测试工具、测试管理工具、接口测试工具等。这些...

    自动化测试概述—自动化测试脚本编写方法二课程介绍

    第一章-自动化测试概述:

    从本章开始,我们开始学习几个主流高级测试工具。我们会将课程分为自动化测试工具、性能测试工具、测试管理工具、接口测试工具等。这些课程属于软件测试技术中难度较大的内容,建议同学们在学习之前先将此前四个阶段的课程内容进行系统有效的复习,以提高学习有效性。

    第二章-UFT(QTP)入门:

    从本章开始,老王将向给位同学介绍HPUFT。UFT的前身是QuickTestProfessonal,作为在测试行业非常有知名度的老牌自动化测试工具,uft具有很多优点,并成为后续很多其他测试工具竞相模块和超越的对象。将UFT作为自动化测试工具系列课程中的第一阶段工具,会为各位同学的自动化测试学习奠定基础

    第三章-UFT(QTP)脚本增强:

    UFT检查点来了!作为UFT中用处最广泛,也是学习必须掌握的知识点,检查点素来都是所有学习掌握UFT软件学习者的学习重点,本章中的主要篇幅都是介绍这个,请各位同学认真听讲喽!!

    第四章-VBScript脚本编程:

    UFT中主要使用的是VBScript,从本章开始着重介绍VBScript,作为一种轻量级脚本语言,简单易学用处大是其主要特点。语言不难,难得只是你的学习方法!

    第五章-Python基础语法:

    Python学习开始了!建议初学者有一些简单的编程基础(实在没有的,可以先去听前面老王讲过的自动化工具中VBScript视频),学习python是为了丰富我们测试工程师的编写测试脚本的方法,而且这个语言真的好简单啊,学起来!

    第六章-Python数据类型与语句结构:

    这一章中主要讲Python数据类型和运算符

    第七章-Python函数与进阶编程:

    Python函数的用处很大,可以简化代码结构,增强复用,这个知识点没有听上去那么难的,跟朕老王学起来!

    展开全文
  • 先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码对一个测试脚本必须存在哪些...
  • 文章来源-测试干货(dahong_test)接口自动化目前是测试圈主流的一个话题,我也在网上搜索了很多关于自动化的关键词,大多数博主分享的python做接口自动化都是以开源的框架,比如:pytest、unittest+ddt(数据驱动) ...
  • #!/usr/bin/env python#-*- coding...python3__author__ = "xxx""""自动化脚本生成工具"""importosimportxlrdimporttimeTestCaseName= ""TestCaseDescription= ""TestCasePreCondition= ""TestCaseStep= ""TestCaseE...
  • 原作者:未知的向往原出处:CSDN原文链接:https://blog.csdn.net/nanalinlinlin/article/details/54692114版权声明:本文为博主原创文章,转载请附上博文链接python3.6+selenium3.0环境:windows10,64位一、安装...
  • #!/usr/bin/env python#-*- coding...python3__author__ = "xxx""""自动化脚本生成工具"""importosimportxlrdimporttimeTestCaseName= ""TestCaseDescription= ""TestCasePreCondition= ""TestCaseStep= ""TestCaseE...
  • 如下图1所示:▲图1二、 自动生成Jmeter文件点击“生成jmeter文件”按钮,如下图2:后台会自动根据选择关联的接口,并自动生成Jmeter文件▲图2部分后台函数内容,如下图3:▲图3三、 设置脚本参数在界面设置并发数、 ...
  • time,re class Baidu(unittest.TestCase): #setUp 用于设置初始的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始部分。# def setUp(self): self.driver=webdriver...
  • python自动化测试脚本报错,报错信息如下:selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing,之前一直运行的好好的。 二、问题原因: chrome浏览器自动升级...
  • 前言之前我们简单讨论了手工测试用例与自动化测试用之间的差异,以及自动化测试用例设计时的注意事项,这一节就通过实例向读者介绍如何编写具体的自动化测试用例。下面我以百度云盘为例:百度云盘是百度的产品之一,...
  • 先前有家供应商与我们合作开发自动化工程,采用的pyunittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码 对一个测试脚本必须存在哪些...
  • python 自动化测试脚本demo

    千次阅读 2019-03-01 11:53:03
    /usr/bin/python import requests import json url='http://127.0.0.1:8080/xx/set_xxx_xxxxx' params={'xxx_xxxxx':0.9} r = requests.post(url,data=json.dumps(params),headers={'Content-Type':'applicati.....
  • python 自动化测试脚本添加日志

    千次阅读 2019-09-05 10:46:33
    # -*- coding: utf-8 -*- __author__ = 'mumu' import logging class Config(object): ... logger = logging.getLogger('BB自动化测试') if not logger.handlers: # 创建一个handler, 用于写入日...
  • Jenkins集成python自动化测试脚本

    千次阅读 2018-09-12 16:37:44
    2. 配置-构建-执行Windows批处理命令,打开python脚本所在目录: d: cd D:\XXXXX\XXXXXX python testing.py 3. 应用并且保存 4. 回到工程页面 5. 点击“立即构建”,会发现已经在跑了~~~~~...
  • 关注交流分享测试资料 #coding:utf-8 import unittest import uiautomator2 as u2 import uiautomator2.ext.htmlreport as htmlreport import time #import autotest import os import re #创建测试类必现继承 ...
  • Unit Level Test:Python: doctest, nosePHP: PHPUnitBehaviour Driven Test (Cucumber-style):Python: Lettuce, BehavePHP: BehatBehaviour Driven Test (Spec-style):Python: specPHP: PHPSpecAcceptance Test (Sel...
  • python自动化测试脚本报错,报错信息如下:selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing,之前一直运行的好好的。 二、问题原因: chrome浏览器自动...
  • 17.反序列cookie,并携带cookie访问url,等待三秒并返回当前页的url def deserialize_cookie_or_send_car (self,cookiePath,url,doMain= '反序列' ) : try : if url is None : self.loger....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,990
精华内容 1,596
关键字:

python自动化测试脚本

python 订阅