Testing HTTPie Offline Mode Operations in httpie/cli
This test suite validates HTTPie’s offline mode functionality, testing various HTTP request methods and data formats without requiring actual network connectivity. It ensures the CLI tool properly handles offline operations across different request types and configurations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
httpie/cli
tests/test_offline.py
from .fixtures import FILE_CONTENT, FILE_PATH_ARG
from .utils import http
def test_offline():
r = http(
'--offline',
'https://this-should.never-resolve/foo',
)
assert 'GET /foo' in r
def test_offline_raw():
r = http(
'--offline',
'--raw',
'foo bar',
'https://this-should.never-resolve/foo',
)
assert 'POST /foo' in r
assert 'foo bar' in r
def test_offline_raw_empty_should_use_POST():
r = http(
'--offline',
'--raw',
'',
'https://this-should.never-resolve/foo',
)
assert 'POST /foo' in r
def test_offline_form():
r = http(
'--offline',
'--form',
'https://this-should.never-resolve/foo',
'foo=bar'
)
assert 'POST /foo' in r
assert 'foo=bar' in r
def test_offline_json():
r = http(
'--offline',
'https://this-should.never-resolve/foo',
'foo=bar'
)
assert 'POST /foo' in r
assert r.json == {'foo': 'bar'}
def test_offline_multipart():
r = http(
'--offline',
'--multipart',
'https://this-should.never-resolve/foo',
'foo=bar'
)
assert 'POST /foo' in r
assert 'name="foo"' in r
def test_offline_from_file():
r = http(
'--offline',
'https://this-should.never-resolve/foo',
f'@{FILE_PATH_ARG}'
)
assert 'POST /foo' in r
assert FILE_CONTENT in r
def test_offline_chunked():
r = http(
'--offline',
'--chunked',
'--form',
'https://this-should.never-resolve/foo',
'hello=world'
)
assert 'POST /foo' in r
assert 'Transfer-Encoding: chunked' in r, r
assert 'hello=world' in r
def test_offline_download():
"""Absence of response should be handled gracefully with --download"""
r = http(
'--offline',
'--download',
'https://this-should.never-resolve/foo',
)
assert 'GET /foo' in r