执行test_case报TypeError: 'NoneType' object is not subscriptable

来源:5-12 多线程、unittest、启动服务逻辑串联

精慕门8475099

2019-05-22

#coding=utf-8
import sys
sys.path.append("…")
import unittest
import HTMLTestRunner
import threading
from util.server import Server
from appium import webdriver
import time
from business.login_business import LoginBusiness
class ParameTestCase(unittest.TestCase):
def init(self,methodName=‘runTest’,parame=None):
super(ParameTestCase,self).init(methodName)
self.parame = parame
global parames
parames = parame

class CaseTest(ParameTestCase):
@classmethod
def setUpClass(cls):
global parames
print(‘setUpClass------>’,parames)
print(LoginBusiness(parames))
cls.login_business = LoginBusiness(parames)

def setUp(self):
    print('setup...')

def test_01(self):
    print('testcase的参数',parames)
    self.login_business.login_sucess()
    #self.assertNotEqual(1,2)
    
def test_02(self):
    self.assertNotEqual(1,1,"数据错误")
    

def tearDown(self):
    print('teardown..')
@classmethod
def tearDownClass(cls):
    print('teardownclass...')

def appium_init():
server = Server()
server.main()

def get_suite(i):
suite = unittest.TestSuite()
#suite.addTest(CaseTest(‘test_02’))
suite.addTest(CaseTest(‘test_01’,parame=i))
print(“参数中”,i)
unittest.TextTestRunner().run(suite)
# html_file = “D:/python/apptest/report/report”+str(i)+".html"
# fp = open(html_file, “wb”)
# HTMLTestRunner.HTMLTestRunner(stream=fp).run(suite)

if name == “main”:
# appium_init()
# print(get_suite(0))
threads = []
for i in range(1):
t = threading.Thread(target=get_suite, args=(i,))
threads.append(t)
for j in threads:
j.start()

执行报错如下:
参数中 0
setUpClass------> 0
0
this is android_driver: 0
E

ERROR: setUpClass (main.CaseTest)

Traceback (most recent call last):
File “D:\python\apptest\case\test_case.py”, line 23, in setUpClass
print(LoginBusiness(parames))
File “…\business\login_business.py”, line 6, in init
self.login_handle = LoginHandle(i)
File “…\handle\login_handle.py”, line 6, in init
self.loginpage = LoginPage(i)
File “…\page\login_page.py”, line 7, in init
self.driver = base_driver.android_driver(i)
File “…\base\base_driver.py”, line 12, in android_driver
devices = write_file.get_value(‘user_info_’+str(i),‘deviceName’)
File “…\util\write_appium_command.py”, line 18, in get_value
value = data[key][port]
TypeError: ‘NoneType’ object is not subscriptable


Ran 0 tests in 0.003s

FAILED (errors=1)
[Finished in 1.0s]

base_driver里代码如下:
#coding=utf-8
import sys
sys.path.append(“D:/python/apptest”)
import time
from appium import webdriver
from util.write_appium_command import WriteAppiumCommand
class BaseDriver:
""“docstring for BaseDriver”""
def android_driver(self,i):
print(“this is android_driver:”,i)
write_file = WriteAppiumCommand()
devices = write_file.get_value(‘user_info_’+str(i),‘deviceName’)
port = write_file.get_value(‘user_info_’+str(i),‘port’)
print(devices,port)
capabilities = {#‘deviceName’: ‘TEX9K18104911115’,
‘deviceName’: devices,
‘automationName’: ‘uiautomator2’,
‘noReset’: True,
‘noSign’: True,
‘appPackage’: ‘com.cmi.jegotrip’,
‘platformName’: ‘android’,
‘appActivity’: ‘com.cmi.jegotrip.ui.LauncherActivity’,
#‘platformVersion’: ‘7.0’
‘platformVersion’: ‘5.1.1’
}
driver = webdriver.Remote(‘http://localhost:’+port+’/wd/hub’, capabilities)
time.sleep(10)
return driver

求救。。。

写回答

2回答

Mushishi

2019-05-22

devices = write_file.get_value(‘user_info_’+str(i),‘deviceName’)
File “…\util\write_appium_command.py”, line 18, in get_value
value = data[key][port]

你看你启动然后去获取值的时候出错了,你去看你设备信息里面有值么?把哪个打印出来。应该是空的。

0
1
精慕门8475099
非常感谢!
2019-05-23
共1条回复

精慕门8475099

提问者

2019-05-23

//img.mukewang.com/szimg/5ce5deb10001772a12900675.jpg

//img.mukewang.com/szimg/5ce5deb10001138514670679.jpg

确实是没获取到设备信息,老师,我打开appium_init()的时候,为啥appium后启动,get_suite()先运行了。。

if __name__ == "__main__":

    appium_init()

    # print(get_suite(0))

    threads = []

    for i in range(1):

        t = threading.Thread(target=get_suite, args=(i,))

        threads.append(t)

    for j in threads:

        j.start()


server.py 代码如下:

//img.mukewang.com/szimg/5ce5e0240001b68511010702.jpg//img.mukewang.com/szimg/5ce5e0250001ef9d15800734.jpg

//img.mukewang.com/szimg/5ce5e04000015e2909530200.jpg

0
2
慕尼黑4521766
回复
精慕门8475099
你好,我也跟你有一样的 错误,能提供具体的解决方法嘛
2020-01-08
共2条回复

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

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

1508 学习 · 1333 问题

查看课程