Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从另一个函数调用函数_Python_Automated Tests_Python Unittest - Fatal编程技术网

Python:从另一个函数调用函数

Python:从另一个函数调用函数,python,automated-tests,python-unittest,Python,Automated Tests,Python Unittest,我正在用python编写我的第一个单元测试,我已经用类和函数编写了一个通过的测试,但是现在我想编写单元测试,它失败了,如下所示 import unittest import requests import time import json from selenium import webdriver from selenium.webdriver.common.keys import Keys class ChromeSearch(unittest.TestCase): def se

我正在用python编写我的第一个单元测试,我已经用类和函数编写了一个通过的测试,但是现在我想编写单元测试,它失败了,如下所示

import unittest
import requests
import time
import json
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class ChromeSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        driver = self.driver
        base_url = 'http://127.0.0.1:8080/'
        driver.get(base_url)

    def test_get_users(self):
        print("Planning to get users")
        token = test_generate_token()
        headers = {'Content-Type': 'application/json',
        'Token': token}

        r = requests.get('http://127.0.0.1:8080/api/users', headers=headers)
        print"Get request for api Users"
        print(r.text)

    def test_generate_token():
        print("Generating Token")
        usernameStr = 'user1a'
        passwordStr = 'user'
        response = requests.get('http://127.0.0.1:8080/api/auth/token', auth=(usernameStr, passwordStr))
        print(response)
        data = response.json()
        print(data)
        if response.status_code == 200 and data["status"] == "SUCCESS":
            token = data["token"]
        else:
            token = None
            print("The request was not successful.")
        print(token)
        return token



    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()
因此,我正在做的是从
test\u get\u users(self)
调用
test\u generate\u token()
来获取令牌,然后使用令牌来获取用户,但它失败了,出现以下错误

    Generating Token
<Response [200]>
{u'status': u'SUCCESS', u'token': u'OTEzMjQ0NjY1OTQ3NzM5OTYyMTczNTM0NzA4MjM0OTQ2NTQ5NDA='}
OTEzMjQ0NjY1OTQ3NzM5OTYyMTczNTM0NzA4MjM0OTQ2NTQ5NDA=
.
DevTools listening on ws://127.0.0.1:50610/devtools/browser/eb427541-898f-4c1d-938d-064462f50a68
Planning to get users
E
======================================================================
ERROR: test_get_users (__main__.ChromeSearch)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".\test_demo_app.py", line 18, in test_get_users
    token = test_generate_token()
NameError: global name 'test_generate_token' is not defined

由于
test\u generate\u token
是一个成员函数,因此需要将其作为成员函数调用


token=self.test\u generate\u token()

由于
test\u generate\u token
是一个成员函数,因此需要将其作为成员函数调用


token=self.test\u generate\u token()

谢谢你,它奏效了,还有一个问题,我的方法怎么样?我从另一个函数调用了一个函数来生成令牌,然后用于获取用户?因为现在我需要相同的令牌来更新用户信息,所以我应该如何在其他方法中使用相同的令牌,还是应该为每个测试生成一个新的令牌?这种方法很好,您可以从
test\u generate\u Token
中删除test\uprefix,这样它就不会作为测试套件的一部分调用。此外,由于它不依赖于实例变量,因此可以将其置于类之外。您可以在
setUp()
函数中生成令牌,然后在testsuite中的其他测试中重用令牌。好的,我已经将令牌生成部分放入安装程序并删除def令牌生成,但是当调用test_get_用户时,它说令牌没有定义,而这个令牌现在在安装部分,我是做错了什么,还是你的意思是其他什么?您可以在上面看到我的新代码,好吧,它工作了,所以,我已经在类外定义了令牌,然后它就可以访问了,我不确定这是否是一个好方法。谢谢,它工作了,还有一个问题,我的方法怎么样?我从另一个函数调用了一个函数来生成令牌,然后用于获取用户?因为现在我需要相同的令牌来更新用户信息,所以我应该如何在其他方法中使用相同的令牌,还是应该为每个测试生成一个新的令牌?这种方法很好,您可以从
test\u generate\u Token
中删除test\uprefix,这样它就不会作为测试套件的一部分调用。此外,由于它不依赖于实例变量,因此可以将其置于类之外。您可以在
setUp()
函数中生成令牌,然后在testsuite中的其他测试中重用令牌。好的,我已经将令牌生成部分放入安装程序并删除def令牌生成,但是当调用test_get_用户时,它说令牌没有定义,而这个令牌现在在安装部分,我是做错了什么,还是你的意思是其他什么?您可以在上面看到我的新代码,它工作正常,所以,我已经在类外定义了令牌,然后它就可以访问了,我不确定这是否是一个好方法
import unittest
import requests
import time
import json
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class ChromeSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        driver = self.driver
        base_url = 'http://127.0.0.1:8080/'
        driver.get(base_url)
        print("Generating Token")
        usernameStr = 'user1a'
        passwordStr = 'user'
        response = requests.get('http://127.0.0.1:8080/api/auth/token', auth=(usernameStr, passwordStr))
        print(response)
        data = response.json()
        print(data)
        if response.status_code == 200 and data["status"] == "SUCCESS":
            token = data["token"]
        else:
            token = None
            print("The request was not successful.")
        print(token)

    def test_get_users(self):
        print("Planning to get users")
        headers = {'Content-Type': 'application/json',
        'Token': token}

        r = requests.get('http://127.0.0.1:8080/api/users', headers=headers)
        print"Get request for api Users"
        print(r.text)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()