在Excel驱动的方法中使用@ pytest.fixtureparams =运行多个测试用例

问题描述

以下代码对params中的每个项目运行一次测试。在这种情况下,由于我使用了[HomePageData.getTestData("Testcase1"),HomePageData.getTestData("Testcase2")])

test_formSubmission运行2次,其中Testcase1Testcase2中存在数据。

但是我只想在test_formSubmission中与Testcase1一起运行一次。

我想在将要创建的另一个Testcase2中使用test_testcase2( )数据。

因此,总而言之,我仅使用一个夹具来提及其中的所有测试用例名称,并将不同的测试用例数据用于不同的test_tescase()。如何实现呢?

import openpyxl


class HomePageData:

    test_HomePage_data = [{"firstname":"Rahul","lastname":"shetty","gender":"Male"},{"firstname":"Anshika","gender":"Female"}]

    @staticmethod
    def getTestData(test_case_name):
        Dict = {}
        book = openpyxl.load_workbook("C:\\Users\\Owner\\Documents\\PythonDemo.xlsx")
        sheet = book.active
        for i in range(1,sheet.max_row + 1):  # to get rows
            if sheet.cell(row=i,column=1).value == test_case_name:

                for j in range(2,sheet.max_column + 1):  # to get columns
                    # Dict["lastname"]="shetty
                    Dict[sheet.cell(row=1,column=j).value] = sheet.cell(row=i,column=j).value
        return[Dict]

我在下面称呼它。上面在字典中提供了数据作为列表值。

from selenium.webdriver.support.select import Select
from selenium import webdriver
import pytest
from TestData.HomePageData import HomePageData
from pageObjects.HomePage import HomePage
from utilities.BaseClass import BaseClass
class TestHomePage(BaseClass):
def test_formSubmission(self,getData):
 log = self.getLogger()
 homepage= HomePage(self.driver)
 log.info("first name is "+getData[0]["firstname"])
 homepage.getName().send_keys(getData[0]["firstname"])
 homepage.getEmail().send_keys(getData[0]["lastname"])
 homepage.getCheckBox().click()
self.selectOptionByText(homepage.getGender(),getData[0]["gender"])
 homepage.submitForm().click()
 alertText = homepage.getSuccessMessage().text
assert ("Success" in alertText)
self.driver.refresh()
@pytest.fixture(params=[HomePageData.getTestData("Testcase1"),HomePageData.getTestData("Testcase2")])
def getData(self,request):
print(request.param)
return request.param

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...