ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Web自动化测试3——数据驱动+pytest

2021-12-17 10:34:50  阅读:198  来源: 互联网

标签:Web allure self driver pytest 自动化 import unittest


视频传送门:https://www.bilibili.com/video/BV1Ey4y1L7xU?p=8&spm_id_from=pageDriver

一、DDT+EXCEL数据驱动

excel/yaml (excel适合做web自动化测试,yaml适合做接口自动化)

1.什么是DDT
data driver test数据驱动测试。可以完美和Unitttest结合实现数据驱动。

2.DDT使用的方式(通过装饰器来使用)
在函数或者类上面加上一个装饰器用来实现一些特定的功能。

@ddt 装饰类,作用是用于声明当前类使用ddt数据驱动。
@data 装饰函数,作用是给函数传值。
@unpack 装饰函数,作用是数据解包
@file_data 装饰函数,作用是直接读取yaml、json文件。

二、Pytest

pytest是unittest的升级版

可以结合allure生成定制版的测试报告

支持很多强大的第三方插件

allure-pytest(生成allure报告),pytest-xdist(做并发),pytest-ordering(处理测试用例的执行顺序)…

三、pytest默认规则

1.模块名必须以test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头

将unittest改为pytest
base_util.py修改如下:

import time

from selenium import webdriver

class BaseUtil:

    def setup(self) -> None:     #unittest是setUp,pytest是setup
        global driver
        # 打开浏览器
        self.driver = webdriver.Chrome()
        driver = self.driver
        # 加载网页
        self.driver.get("http://localhost/ecshop/admin/privilege.php?act=logout")

    def teardown(self) -> None:     #unittest是tearDown,pytest是teardown
        time.sleep(3)
        self.driver.quit()

test_login.py修改如下:

import pytest
from ddt import ddt, data, unpack
from selenium import webdriver

from base.base_util import BaseUtil
from common.excel_util import ExcelUtil
from pageobject.login_page import LoginPage

# @ddt
class TestLogin(BaseUtil):

    # @data(*ExcelUtil().read_excel())
    # @unpack
    @pytest.mark.parametrize("index,username,password", ExcelUtil().read_excel())
    def test_01_login(self, index, username, password):
        """ 登录 """
        lp = LoginPage(self.driver)
        lp.login_ecshop(username, password)
        if index == 1:
            # 断言
            # self.assertEqual(lp.get_except_result(),'退出')
            assert lp.get_except_result() == '退出'

all.py修改如下:

import os
import unittest
from HTMLTestRunner import HTMLTestRunner

import pytest

if __name__ == '__main__':
    # #执行需要的用例,并且生成HTML格式的自动化的测试报告
    # #使用unittest默认的测试用例的加载器去发现testcase目录下以py结尾的所有的测试用例
    # suite = unittest.defaultTestLoader.discover("./testcase","*.py")
    # #生成html报告文件
    # report_file = open("./report/reports.html","wb")
    # #s生成一个HTMLTestRunenr运行器对象(必须下载一个文件HTMLTestRunner.py,放到python的lin目录)
    # runner = HTMLTestRunner(stream=report_file,title="ECSHOP自动化测试报告", description="报告详情如下:")
    # #通过运行器运行测试用例
    # runner.run(suite)
    
    #第一步:生成json格式临时文件
    pytest.main(['-vs',r'E:\workspace\pythonwork\publicdemo\testcase','--alluredir','./temp','--clean-alluredir'])
    #第二步:根据json格式临时文件生成allure报告
    os.system("allure generate ./temp -o ./report --clean")

第一步
pytest.main是用来运行pytest测试用例的,它会自动寻找符合pytest规则的用例
‘-vs’表示打印数据结果
第二个参数是表示测试用例在哪个目录
‘–alluredir’,’./temp’表示allure报告放在根目录的temp目录下
'–clean-alluredir’表示每次执行都把temp目录清除掉
第二步
allure generate表示构建
./temp 是根据temp目录下的json文件
-o 表示输出
./report 输出到report目录下
–clean 表示每次都清除原来的文件

标签:Web,allure,self,driver,pytest,自动化,import,unittest
来源: https://blog.csdn.net/weixin_45730790/article/details/121948228

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有