在创建单元测试以确保我想要的方法工作良好时,我遇到了一个问题。不过,使用nodetest运行它并没有提供任何覆盖范围。
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发布于 2015-04-04 19:09:58
# 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)https://stackoverflow.com/questions/29442296
复制相似问题