python unittest TestCase间共享数据(全局变量的使用)
程序员文章站
2024-02-09 18:01:52
...
在使用unittest过程中,发现有时候如果想在测试用例之间共享变量,无法直接实现。查询之后发现解决方式如下:
(1)setup里面的变量算全局变量,但TestCase里面是局部变量
from settings import *
import requests,json
import unittest
class Login(unittest.TestCase):
@classmethod
def setUpClass(self):
api_token = '/v1/api/common/getToken'
self.real_token_url = API_TEST_BASE_URL + api_token
self.token = None
def test_get_token(self):
r = requests.post(url=self.real_token_url)
self.token = json.loads(r.text)['model']['token']
print("第一个case获得的token:",self.token)
return self.token
def test_get_u(self):
print("第二个case获得token值:",self.token)
if __name__ == '__main__':
unittest.main()
最终结果
第一个case获得的token: 48579630472b45a0b0b553bc85a335f8
第二个case获得token值: None
- 说明在unttest框架中,testcase中间不共享变量的值,但是都可以从setupclass里面读取统一的变量值
- 可以setup时候设置全局变量,不同的case之间就可以共享这个变量了
#(2)TestCase之间共享全局变量,方式一:
from settings import *
import requests,json
import unittest
class Login(unittest.TestCase):
@classmethod
def setUpClass(self):
api_token = '/v1/api/common/getToken'
self.real_token_url = API_TEST_BASE_URL + api_token
globals()["token"] = None
def test_get_token(self):
r = requests.post(url=self.real_token_url)
globals()["token"] = json.loads(r.text)['model']['token']
print("第一个case获得的token:",globals()["token"])
return globals()["token"]
def test_get_u(self):
print("第二个case获得token值:",globals()["token"])
if __name__ == '__main__':
unittest.main()
最终结果为:
第一个case获得的token: 44c5fcccca6c4e64a1c5d314b7ee22fc
第二个case获得token值: 44c5fcccca6c4e64a1c5d314b7ee22fc
#(3)TestCase之间共享全局变量,方式二:
import unittest
class Mydemo(unittest.TestCase):
def test1(self):
Mydemo.a = "88"
print("test1----- the value of a is {}".format(self.a))
def test2(self):
print("test2----- the value of a is {}".format(Mydemo.a))
if __name__ == '__main__':
unittest.main()
最终结果:
test1----- the value of a is 88
test2----- the value of a is 88
我们运行test1的时候,给Mydemo加了一个新的属性a(值为88),
当我们运行test2时,我们就能拿到Mydemo类的属性了
引用文章来源:
https://blog.csdn.net/happyteafriends/article/details/22728749
https://www.cnblogs.com/hhudaqiang/p/6596043.html
上一篇: 关于在ajax中传递中文引起的乱码问题。