想要将ParameTestCase、case、多线程执行case分开为三个文件,提高代码可读性,但出现params传递出现错误

来源:5-14 多进程、unittest、HTMLTestRunner、启动服务流程梳理代码重构

weibo_喔在路上_0

2018-05-28

老师你好,我想将代码拆分,但目前遇到parames传递值的问题,希望老师能帮忙答疑解惑,谢谢
1、包名:parame_testcase
class ParameTestCase(unittest.TestCase):

    def __init__(self, methodName = 'runTest', parame = None):
        super(ParameTestCase, self).__init__(methodName)
        # 全局变量
        global parames
        self.parames = parame
2、包名:test_takePicture
class Test_takePicture(ParameTestCase):
    u'''test about take pictures'''
    @classmethod
    def setUpClass(cls):
        print('setUpClass---->',ParameTestCase.parames)
        cls.camera = CameraBusiness(ParameTestCase.parames)

    @classmethod
    def tearDownClass(cls):
        print('this is teardown class')

    def setUp(self):
        print('this is setup')

    def tearDown(self):
        print('this is teardown')

    def test_01(self):
        u'''1 and 1'''
        print('testcase01里面的参数,',ParameTestCase.parames)
        self.camera.take_pictures()
if __name__ == '__main__':
    unittest.main()
3、包名:
def appium_init_server():
    '''
    启用appium
    :return: 
    '''
    server = Server()
    server.main_thread_server()


def get_count():
    '''
    获得设备行数
    :return: 
    '''
    edityaml = EditYaml()
    count = edityaml.get_file_lines()
    return count


def get_suite(i):
    print("get_suite里面的", i)
    suite = unittest.TestSuite()

    suite.addTest(test_takePicture.Test_takePicture("test_01", parame=i))
    #suite.addTest(unittest.makeSuite(test_2.Test_2,parame = i))

    unittest.TextTestRunner().run(suite)
    # 导入当前时间,使用time模块的相关函数
    # now=time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())
    # html_file = '../report/report'+ str(i) +'.html'
    # fp = open(html_file,'wb')
    # runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='test result', description=u'result:')
    # runner.run(suite)
    # fp.close()


# 使用多线程
if __name__ == '__main__':
    appium_init_server()
    # get_suite(0)
    threads = []
    for i in range(get_count()):
        print(i)
        t = multiprocessing.Process(target=get_suite, args=(i,))
        threads.append(t)
    for j in threads:
        j.start()


写回答

1回答

Mushishi

2018-05-29

思路不错,但是建议你把python继承这块儿的知识看一下,test_takePicture.Test_takePicture("test_01", parame=i)这里往里面传递的时候

 @classmethod

    def setUpClass(cls):

这个里面你这样直接先打印parame,然后你学会调试。现在你的问题出现再继承那里。

0
6
Mushishi
回复
慕府将军
哈哈,这个关于多个文件得后面我给大家更新一下资料。加载不同类型case得一个解决方案。
2018-07-27
共6条回复

Python主讲移动端自动化测试框架Appium

APP自动化基础知识、po模型、关键字模型、服务自动化、持续集成

1508 学习 · 1333 问题

查看课程