unittestz 上一个接口值作为下一个接口的参数
在使用unittest过程中,发现有时候如果想在测试用例之间共享变量,无法直接实现。查询之后发现解决方式如下:
setupclass里设置globals().[“xxx”]变量,不同用例之间可以实时共享参数变动
一、A接口的返回值传到B接口
import requests
class TestGoods(unittest.TestCase):
def setUp(self):
#定义globals
self.g = globals()
def test_one(self):
#假设这个值为返回值,对返回值进行赋值
self.g["one"] = '1111111'
def test_two(self):
#在B接口中接受这个参数,并进行打印
print(self.g['one'])
if __name__ == '__main__':
unittest.main()
二、多个接口中互相传递参数,A传B,B传C
import requests
class TestGoods(unittest.TestCase):
def setUp(self):
self.g = globals()
def test_one(self):
self.g["one"] = '1111111'
def test_two(self):
print(self.g['one'])
self.g['two'] = 22222
def test_three(self):
print(self.g['one']+'77777')
print(self.g['two']+'88888')
if __name__ == '__main__':
unittest.main()
执行程序,会产生报错,two的全局变量不存在,看着这个结果你会发现,唉,怎么只有一个有值,另一个呢?这个问题涉及到了python unittest中的测试用例执行顺序,可参考博客unittest中测试用例的执行顺序
可修改为以下:
import requests
class TestGoods(unittest.TestCase):
def setUp(self):
self.g = globals()
def test_1_one(self):
self.g["one"] = '1111111'
def test_2_two(self):
print(self.g['one'])
self.g['two'] = '22222'
def test_3_three(self):
print(self.g['one']+'77777')
print(self.g['two']+'88888')
if __name__ == '__main__':
unittest.main()