selenium 正在运行带线程的pytest

ltskdhd1  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(174)

我有个问题要问pytest
我想用多个线程运行相同的pytest脚本。但是,我不知道如何创建和运行传递多个参数的线程。(用pytest运行线程...)
例如我有test_web.py

from selenium import webdriver
import pytest

class SAMPLETEST:
    self.browser = webdriver.Chrome()
    self.browser.get(URL)
    self.browser.maximize_window()

    def test_title(self):
        assert "Project WEB" in self.browser.title

    def test_login(self):
        print('Testing Login')

        ID_BOX =  self.broswer.find_element_by_id("ProjectemployeeId") 
        PW_BOX = self.broswer.find_element_by_id("projectpassword") 
        ID_BOX.send_keys(self.ID) # this place for ID. This param come from thread_run.py
        PW_BOX.send_keys(self.PW) # this place for PW. It is not working. I am not sure how to get this data from threa_run.py
        PW_BOX.submit()

在线程_运行.py中

import threading
import time
from test_web import SAMPLETEST

ID_List = ["0","1","2","3","4","5","6","7"]
PW_LIST = ["0","1","2","3","4","5","6","7"]


threads = []
print("1: Create thread")

for I in range(8):
    print("Append thread" + str(I))
    t = threading.Thread(target=SAMPLETEST, args=(ID_List[I], PW_LIST[I]))
    threads.append(t)

for I in range(8):
    print("Start thread:" + str(I))
    threads[I].start()

我能够运行线程来运行许多SAMPLETEST类而无需pytest。
但是,它不是与pytest一起工作。
我的问题是。
首先,如何在SAMPLETEST的insde中初始化self.brower?我确信下面的代码不会起作用

self.browser = webdriver.Chrome()
    self.browser.get(URL)
    self.browser.maximize_window()

其次,在thread_run.py中,当我运行线程调用test_web.py上的SAMPLTEST时,如何传递两个参数(ID和Password)?
ID_BOX.send_keys(self.ID)#此位置为ID。此参数来自thread_run.py

ID_BOX.send_keys(self.ID) 

            PW_BOX.send_keys(self.PW)

我试图在SAMPLETEST类中构建构造函数(init),但它不起作用...
我不太清楚如何使用pytest运行线程(传递参数或参数)。

qyswt5oh

qyswt5oh1#

有两种情况,我可以从这读:
1.准备测试数据并将参数传递给你的测试方法,这可以通过pytest-generate-tests和parameterise概念来实现。你可以参考这里的文档
1.如果在多线程中运行pytest-Pytest-xdistpytest-parallel

ef1yzkbh

ef1yzkbh2#

我有一个类似的问题,并得到了解决,通过传递一个参数的形式列表。
例如:,我替换了下面的行

线程_1 =线程(目的=函数1,参数=10)

线程_1 =线程(目的=函数1,参数=[10])

相关问题