问题描述
以下代码对params中的每个项目运行一次测试。在这种情况下,由于我使用了[HomePageData.getTestData("Testcase1"),HomePageData.getTestData("Testcase2")])
test_formSubmission
运行2次,其中Testcase1
和Testcase2
中存在数据。
但是我只想在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 (将#修改为@)