PO模式 - TestCases测试用例,集成pytest

本文详细介绍如何使用pytest框架进行web单元测试,包括配置pytest.ini文件、编写前置和后置条件、创建测试用例等步骤,并解决pytest运行中常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最后我们要把所有的元素定位、页面操作、测试数据,结合起来。这里我用的pytest单元测试框架,也可以用unittest来进行,但是unittest用来做web单元测试不太好用。

首先:
我们在TestData创建一个pytest.ini的配置文件(有无可无,看自己需要。),创建一个打标签的元素
在这里插入图片描述

其次我们在TestCases里创建一个conftest.py的一个文件,用在于编写前置条件和后置条件

import pytest
from selenium import webdriver
from PO.Common.config import url_config


@pytest.fixture(scope="function")
def search_baidu():
    driver = webdriver.Chrome()
    driver.get (url_config.get ('excel_re', 'url'))
    driver.maximize_window()
    yield driver #yield往上是前置条件,往下是后置条件。且yield也是个返回值跟return差不多
    driver.quit()

最后,我们在TestCases创建test_baidu.py。必须以test__test方式来命名,学过unittest和pytest的人都知道。要不然pytest找不到这个文件,导致无法运行
这个test_baidu.py是测试用例了,就是把我们之前的元素定位和页面操作、测试数据集合在一起。

import pytest


from PO.PageObjects.baidu_page import WebBaidu
from PO.PageObjects.baidu_search_result_page import WebBaiduSousu
from PO.TestDatas import baidu_datas as loc




class TestBaidu():
    @pytest.mark.usefixtures("search_baidu")
    @pytest.mark.index
    def test_baidu_0(self,search_baidu):
        WebBaidu(search_baidu).baidu_login(loc.baidu_data["baidu"])
        assert loc.baidu_data["check"] == WebBaiduSousu(search_baidu).baidu_sousu()


    @pytest.mark.usefixtures ("search_baidu")
    @pytest.mark.parametrize("data",loc.baidu_2_data)
    def test_baidu_1(self,search_baidu,data):
        WebBaidu(search_baidu).baidu_login(data["baidu"])
        assert data["check"] == WebBaiduSousu(search_baidu).baidu_sousu()

运行结果:
在这里插入图片描述
pytest疑问:
为什么我的pytest运行不了
1.查看当前项目的文件夹有没有__init__.py文件,要是没有,都去新建一个。因为pytest要求每个文件夹必须都是Pyton Package文件
2.把当前项目下的所有__pycache__文件删掉。这是个缓存文件。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值