当前位置: 首页 > 知识库问答 >
问题:

模仿请求。post[重复]

徐承载
2023-03-14

这是我第一次编写单元测试,尽管我尽了最大的努力,但还是不可避免地给您带来了麻烦。我试图模拟requests.post,但是我的测试函数没有达到预期的效果,它诱导了一个404状态代码,以便测试错误处理。

MyModule.Py

def scrape(data):
    logger.debug(f'\nBeginning scrape function')
    result = {}
    exceptions = {}
    for id, receipts in data.items():
        logger.debug(f'Looking up Id # {id} and receipts: \n{receipts}')
        dispositions = []
        for receipt in receipts:
            logger.debug(f'The length of receipts is:' + str(len(receipts)))
            attempts = 1
            while attempts < 6:
                logger.debug(
                    f'This is attempt number {attempts} to search for {receipt}')
                payload = {'receipt': 'receipt',
                           'button': 'CHECK+STATUS', }
                try:
                    NOW = datetime.today().strftime('%c')
                    logger.debug(NOW)
                    logger.debug(f'Making post request for: {receipt}')
                    response = requests.post(URL, data=payload, headers=HEADERS, timeout=10)
                except Exception as e:
                    logger.debug(f'There was an exception: {e}')
                    exceptions[id] = receipt + f': {e}'
                    time.sleep(3)
                    attempts += 1
                else:
                    logger.debug(f'It worked {response.status_code}')
                    attempts = 6
                    disp = parse(response)
                    dispositions.append(f'{receipt}: {disp}')
        result[id] = dispositions
        logger.debug(f'Here is the result: {result}')
        return result
def test_scrape(self):
    print(f'\ntest_scrape running')

    # mock a 404 in scrape() here
    with patch("mymodule.requests") as patched_post:

        # mock a request response
        patched_post.return_value.status_code = 404
        print('404 mocked')

        # verify the function returns nothing due to 404
        result = scrape(test_data)
        print(f'\n{result}')
        mock_requests.post.assert_called_once()
        self.assertEqual(result, {})

共有1个答案

濮阳和泰
2023-03-14

def test_scrape(self):打印(f'\ntest_scrape running')

# mock a 404 in scrape() here
with patch("mymodule.requests") as patched_post:

    # mock a request response
    patched_post.return_value.status_code = 404
    print('404 mocked')

    # verify the function returns nothing due to 404
    result = scrape(test_data)
    print(f'\n{result}')
    mock_requests.post.assert_called_once()
    self.assertEqual(result, {})
 类似资料:
  • <?php $requestBody = array( 'lang' => 'php', 'ver' => 'any' ); $http = HttpRequest::newSession(); $response = $http->post('http://www.baidu.com/', $requestBody);

  • 我试图从一个Angular控制器执行POST操作,当我的Java RestController不需要任何参数(例如,下面的签名只是)时,它就可以工作,但是一旦我告诉它需要一个参数,并试图在Angular的POST请求中发送它,它就会失败,出现。是否需要做一些事情来从一个角帖子中正确地发送数据?

  • 我必须使用REST API将文件和信息上传到服务器。该API使用多部分形式,但我似乎无法正确使用它。 null 我尝试了几种方法,比如下面的代码,但是我不断从服务器得到错误的请求。

  • 我发送POST请求(OKHttp)从Android到Python服务器。 为什么标签为空,我在设置POST参数时丢失了一些点吗?

  • 对传递的 URL 发出一个 POST 请求。 使用 XMLHttpRequest web api 对给定的url 发出一个 post 请求。 用 setRequestHeader 方法设置 HTTP 请求头的值。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第三个参数 data ,不发送数

  • 我试图点击一个postendpoint,但它给出了错误302,当我在同一台服务器上尝试另一个get Url时,它给出了200。然后,我使用laxrirectstrategy()重定向了post请求。post请求正在重定向到get请求(只有同一个endpoint的方法名是get和post),它没有从post方法获得响应。有人能告诉我如何使用apahce httpClient 4.5将post请求重定