为每个问题生成一次随机值

2024-09-22 16:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为拍卖生成随机标题,然后在方法之外使用它。你知道吗

添加_寄售.py地址:

class AddConsignmentPage(BasePage):

    def __init__(self, driver):
        super(AddConsignmentPage, self).__init__(driver, self._title)
        self._title_uuid = get_random_uuid(7)

inst = AddConsignmentPage(AddConsignmentPage)

我想使用相同的标题来查看添加的寄售(在搜索字段中键入标题)

查看_寄售.py你知道吗

from pages.add_consignment import inst
class ViewConsignmentsPage(BasePage):
    _title_uuid = inst._title_uuid

    def check_added_consignment(self):
        self.send_keys(self._title_uuid, self._auction_search)

在这种情况下,标题生成两次,因此添加的寄售中的标题与搜索字段中的标题不同

那么,如何将_title_uuid的值从addCommitmentPage传递到viewCommitmentsPage?我希望它在两种方法中是相同的,但是对于每一个寄售(测试用例)是不同的

如何为每批货物生成一次?你知道吗


Tags: 方法pyself标题uuidtitleinit地址
3条回答

这是因为_title_uuid是一个class variable而不是一个实例变量:它只初始化了一次。但是如果你在构造函数中初始化它,它应该可以工作。你知道吗

另见Static class variables in Python

例如

import random

class Foo:
    num1 = random.randint(1,10)

    def __init__(self):
        self.num2 = random.randint(1,10)

for n in range(10):
    foo = Foo()
    print(foo.num1, foo.num2)

运行上述命令可以得到:

(7, 2)
(7, 6)
(7, 6)
(7, 5)
(7, 7)
(7, 1)
(7, 2)
(7, 3)
(7, 7)
(7, 7)

您也可以在这里执行print(Foo.num1),如果这澄清了什么的话,但不能执行print(Foo.num2),因为这只存在于实例化对象。你知道吗

如您所见,num1被初始化一次,而num2被初始化为对象的每个实例化。你知道吗

在你的情况下,你可以这样做:

class AddConsignmentPage(BasePage):
    def __init__(self):
        super(AddConsignmentPage, self).__init__() # initializes BasePage
        self._title_uuid = get_random_uuid(7)

    # ...

我认为应该在__init__方法中定义{title}uuid,因为类的值每次都会更改。你知道吗

在你的情况下可能是:

def __init__(self, *args, **kw):
   super(AddConsignmentPage, self).__init__(*args, **kw)
   self._title_uuid = get_random_uuid(7)

我已经通过向init方法添加viewcountmentspage.\u title\u uuid=self.\u title\u uuid解决了这个问题

添加_寄售.py地址:

from pages.view_consignments import ViewConsignmentsPage

class AddConsignmentPage(BasePage):

    def __init__(self, driver):
        super(AddConsignmentPage, self).__init__(driver, self._title)
        self._title_uuid = get_random_uuid(7)
        ViewConsignmentsPage._title_uuid = self._title_uuid

相关问题 更多 >