请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用TestLoader.discover 方法时 该如何传递参数 parame?

class BaseTest():
def teabc(self,i):
print(“BaseTest中的 i”)
print(i)

class ParameTestCase01(unittest.TestCase):
def init(self,methodName=‘runTest’,parame=None):
super(ParameTestCase01,self).init(methodName)
global parames
parames=parame
print(parames)

class MyTestCase005(ParameTestCase01):

@classmethod
def setUpClass(cls):
    print("setUpclass---->"+str(parames))
    bb=BaseTest()
    bb.teabc(parames)


def setUp(self):#准备的过程
    print("setUp")

def test_01(self):#执行的过程,以test开头的测试用例
    time.sleep(10)

    self.assertTrue(True)

def test_02(self):  # 执行的过程,以test开头的测试用例
    self.assertTrue(True)

def tearDown(self):#清理的过程
    # self.driver.quit()  

    print("tearDown")


@classmethod
def tearDownClass(cls):
    print('tearDownCls')

def get_now_time():
ts = time.time()
dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts))
# dt=time.strftime("%Y-%m-%d", time.localtime(ts))
dt = time.strftime("%Y-%m-%d_%H%M%S", time.localtime(ts))
dt = time.strftime("%Y%m%d_%H%M%S", time.localtime(ts))
return dt

def get_suite(i):
print(“get_suite里面的”, i)
test_dir = sys.path[0]

suite = unittest.TestSuite()
#suite.addTest(MyTestCase005("test_01", parame=i))
#suite.addTest(MyTestCase005("test_02", parame=i))

suite = unittest.defaultTestLoader.discover(test_dir, pattern='pytest*.py')
# unittest.TextTestRunner().run(suite)

# html_file = "E:/Teacher/Imooc/AppiumPython/report/report" + str(i) + ".html"
#
pfilename = os.path.basename(sys.argv[0]).split(".")[0]
filename = 'D:/workplace/pycharm/Wholebraintest/report/'+str(i)+ pfilename + get_now_time() + '.html'
fp = open(filename, "wb")
# HTMLTestRunner.HTMLTestRunner(stream=fp, title="alan测试报告", description="用例测试情况").run(suite)
HTMLTestReportCN.HTMLTestRunner(stream=fp, title="alan测试报告", description="用例测试情况").run(suite)
fp.close()

if name == ‘main’:
print(“haha”)
threads = []
for i in range(3):
print(i)
t = multiprocessing.Process(target=get_suite, args=(i,))
threads.append(t)
for j in threads:
j.start()

在用例比较多的时候
我 get_suite()里面 如果想用 suite = unittest.defaultTestLoader.discover(test_dir, pattern=‘pytest*.py’) 这种方法 不用 suite.addTest(MyTestCase005(“test_02”, parame=i)) 这种 那么 参数 i 该怎么传?

正在回答 回答被采纳积分+3

2回答

Mushishi 2018-12-18 09:55:42

你得想法很好,可是现实很残忍,1、你可以通过配置文件得形式。把你的i写入配置文件,你case去读取。执行一次之后删除。下次开始再写。执行完就删除

2、https://www.cnblogs.com/Mushishi_xu/p/9503078.html 这个之前写了文章的慕课手记里也有

1 回复 有任何疑惑可以回复我~
  • 提问者 千山萌受 #1
    进程 没有同步锁lock方法啊。这样 怎么弄?
    回复 有任何疑惑可以回复我~ 2018-12-21 16:20:01
  • 提问者 千山萌受 #2
    我用1方法的时候 在setup里面读取 ini文件 读取完后,获取i的值以后,再删除 ini文件中 对应的值 但是进程没有 lock方法。读取的时候 会有问题 有时会提示 找不到section啥的
    回复 有任何疑惑可以回复我~ 2018-12-21 16:23:15
提问者 千山萌受 2018-12-18 10:25:10

ok。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信