gpt4 book ai didi

python - 使用装饰器重构以减少代码量

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:08 25 4
gpt4 key购买 nike

我最近切换到一个新项目,我们所有的 selenium 测试都是用 Python 编写的。我想知道是否可以通过使用装饰器来减少代码量

我们现在得到的是:

class BasePage(object):
view_button = ".//a[text()='View']"
create_button = ".//a[text()='Create']"
#some code here

class BaseTestCase(unittest.TestCase):
setUpclass(cls):
#code here

def find(cls,xpath):
return cls.driver.find_element_by_xpath(xpath)


class SomeTest(BaseTestCase):
def test_00_something(self):
self.find(self.view_button).click()

我在想有没有办法将整个self.find(self.view_button).click() 最小化为click.view_button

我听说它可以使用装饰器来完成,但作为一个 Java 人,我在这方面收效甚微。

最佳答案

您还可以查看以下解决方案;创建新模块 - navigation.py :

class Button():

def __init__(self,driver, locator):
self.driver = driver
self.locator = locator

@property
def click(self):
return self.driver.find_element_by_xpath(self.locator).click()

class Navigation():

"""NAVIGATION COMMANDS """
def goTo(self):
#somethign

def previousPage(self):
#something

""" BUTTONS """
@property
def view_button(self):
xpath = ".//a[text()='View']"
view = Button(self.driver,xpath)
return view

@property
def create_button(self):
xpath = ".//a[text()='Create']"
create = Button(self.driver,xpath)
return create

在basetestcase.py中:

class BaseTestCase(unittest.TestCase, Navigation)

setUpClass(cls):
#somethign here

您的测试用例将如下所示:

class TestSomething(BaseTestCase):

def test_99_somethign(self):
#finds .//a[text()='View'] and clicks
self.view.click

#create button
self.create_button.click

这样,您就可以在测试中使用导航类。另外,您将所有导航元素都放在一个地方

关于python - 使用装饰器重构以减少代码量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com