创建单元测试时遇到问题,以确保我喜欢的方法运行良好。使用nodetests运行它虽然没有覆盖。
import unittest
from mock import Mock, patch, MagicMock
from django.conf import settings
from hackathon.scripts.steam import *
class SteamTests(unittest.TestCase):
def setup(self):
self.API_URL = 'http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/'
self.APIKEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
self.userID = 'Marorin'
self.steamnum = '76561197997115778'
def testGetUserIDNum(self):
'''Test for steam.py method'''
# Pulling from setUp
userID = self.userID
API_URL = self.API_URL
APIKEY = self.APIKEY
# constructing the URL
self.url = API_URL + '?' + APIKEY + '&' + userID
with patch('hackathon.scripts.steam.steamIDpulling') as mock_steamIDPulling:
# Mocking the return value of this method.
mock_steamIDpulling = 76561197997115778
self.assertEqual(steamIDPulling(userID,APIKEY),mock_steamIDpulling)
提取信息的方法:
def steamIDPulling(SteamUN,key):
#Pulls out and returns the steam id number for use in steam queries. steaminfo = {'key': key,'vanityurl': SteamUN}
a = requests.get('api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/';, params=steaminfo)
k = json.loads(a.content)
SteamID = k['response']['steamid']
return SteamID
答案 0 :(得分:0)
# Mocking the return value of this method.
mock_steamIDpulling = 76561197997115778
应该是:
# Mocking the return value of this method.
mock_steamIDpulling.return_value = 76561197997115778
但是,你的代码并没有多大意义。如果您尝试测试steamIDpulling
的返回值,请执行以下操作:
def testGetUserIDNum(self):
'''Test for steam.py method'''
# Pulling from setUp
userID = self.userID
API_URL = self.API_URL
APIKEY = self.APIKEY
# constructing the URL
self.url = API_URL + '?' + APIKEY + '&' + userID
self.assertEqual(steamIDPulling(userID,APIKEY), 76561197997115778)
只有在需要更改测试方法中的值时才需要进行模拟(除非您测试mock
库)。要模拟请求库,请执行:
def testGetUserIDNum(self):
'''Test for steam.py method'''
# Pulling from setUp
userID = self.userID
API_URL = self.API_URL
APIKEY = self.APIKEY
# constructing the URL
self.url = API_URL + '?' + APIKEY + '&' + userID
with patch("requests.get") as mock_requests_get:
mock_requests_get.return_value = """{"response": {"streamid":76561197997115778}}"""
self.assertEqual(steamIDPulling(userID,APIKEY), 76561197997115778)