....
点错了
请问 py 重跑是如何实现的?

已搞定,修改了 HTMLTestRunner,固定长度高度。
DDT 就是数据驱动
自己搭框架啊  python + unittest + PO 模式 + ddt 应该就满足你的问题了。
另外,我也是小白。目前我做的 ui、接口测试就是用这种框架实现的。
ddt 啊
我现在实现了 取返回结果 组成新的 dict 和 预期结果对比。 暂时觉得这样好,新东西慢慢看。我先收藏,谢谢了 
暂时用这种方法,后续看看需求,如果需要对比的 key value 过多,在使用循环遍历。 
z = len([i for i in x.items() if i in y.items()]) 
遍历对比,学习了,感谢!
学习了,感谢!
resp = base.get_response(self.url,'post',**DataAll)
respdict = {'ret':resp['ret'],'msg':resp['msg'],'user_id':resp['user_id'],'user_name':resp['user_name']}
self.assertEqual(eval(TestData[5]),respdict)
我现在写成这样了,感觉还好, respdict 是我从请求的返回结果里取值组成字典跟 TestData[5] 里的预期结果做对比,感觉还可以
学习了,感谢!
import unittest
#整个文件的开始和结束执行
def setUpModule():
    print("test module start >>>>>>>>>>>>>>")
def tearDownModule():
    print("test module end >>>>>>>>>>>>>>")
class Test(unittest.TestCase):
    #整个Test类的开始和结束执行
    @classmethod
    def setUpClass(cls):
        print("test class start =======>")
    @classmethod
    def tearDownClass(cls):
        print("test class end =======>")
    #每个用例的开始和结束执行
    def setUp(self):
        print("test case start -->")
    def tearDown(self):
        print("test case end -->")
    def test_case(self):
        print("test case1")
    def test_case2(self):
        print("test case2")
if __name__ == '__main__':
    unittest.main()
请问,这样看来 setupclass-and-teardownclass 仅准备当前 Test 类下面所有的测试用例适用。但如果针对多个.py 文件多个类测试,这种还适用吗?
感谢你的回复。
'''获取token'''
def get_token():
    '''请求接口获取token值'''
    return token
temp_token = get_token()
'''测试A'''
class A():
    token = temp_token 
    def case1():
          token1 
'''测试B'''
class B():
    token = temp_token 
    def case1():
           token2
这两个测试用例获取的 token1 和 token2 还是不一样。是我调用有问题吗?
请问我哪里写的有问题吗?感谢。
感谢。目前找到了 #11 方法,回头还是要研究装饰器
这个方法我试过,不是我想要的。 我在其他地方找到了 #11 方法,试用了下还可以。
接下来还是要研究装饰器
def tearDown(self):
    result = self.defaultTestResult() 
    self._feedErrorsToResult(result, self._outcome.errors)
    error = self.list2reason(result.errors)
    failure = self.list2reason(result.failures)
    ok = not error and not failure
    if not ok:
        BasePage.Action(self.driver).save_screenshot()
    self.driver.quit()
def list2reason(self, exc_list):
    if exc_list and exc_list[-1][0] is self:
        return exc_list[-1][1]
装饰器这个不理解。还需要多学习研究。
感谢。找到了方法!
try:
     self.assertTrue(self.driver.find_element_by_name(u'xxxxxx'))
except Exception as msg:
      print (msg)
      public.screenshot("error.png")
1.这个帖子我有看过,如果你说的是 try 捕获异常截图,这样的话断言失败截图功能实现了,但是这条用例显示是 pass
2.这个帖子下面有个装饰器,不知道大佬是否研究过,搞了半天没搞定装饰器的用法。我用的是 python3
请教  能否参考下断言的封装  我之前也想过断言的封装,但是没成功。初学者 
另外,为啥成功了 还要去截图呢?
楼主还在吗,可以交流下吗?
我之前用命令安装这几个文件时也提示出错 多试几次就 OK 了 不清楚为啥。。。
def find_toast(self, message, driver):
    message = '//*[@text=\'{}\']'.format(message)
    element = WebDriverWait(driver, 20, 0.5).until(
        expected_conditions.presence_of_element_located((By.XPATH, message)))
    # print(element)
    return element
用的以上方法,这也是在网上找的 appium 1.6.5
好的,谢谢。晚上回去试试