|
|
@@ -97,3 +97,59 @@ def test_kv_invalid_format_skipped(capsys):
|
|
|
cli.main(['get', '/p', '-p', 'no_equals', '-p', 'k=v'])
|
|
|
inst.get.assert_called_once_with('/p', params={'k': 'v'})
|
|
|
assert '需要 k=v 格式' in capsys.readouterr().err
|
|
|
+
|
|
|
+
|
|
|
+# --- put 子命令(与 post 对称) ---
|
|
|
+
|
|
|
+@patch('dw_base.ds.cli.DSClient')
|
|
|
+def test_put_with_json_body(MockClient, capsys):
|
|
|
+ inst = MagicMock()
|
|
|
+ inst.put.return_value = {'ok': True}
|
|
|
+ MockClient.return_value = inst
|
|
|
+
|
|
|
+ cli.main(['put', '/foo/1', '-j', '{"a":1}'])
|
|
|
+
|
|
|
+ inst.put.assert_called_once_with('/foo/1', json_body={'a': 1}, form_data=None)
|
|
|
+
|
|
|
+
|
|
|
+@patch('dw_base.ds.cli.DSClient')
|
|
|
+def test_put_with_form_data(MockClient, capsys):
|
|
|
+ inst = MagicMock()
|
|
|
+ inst.put.return_value = {'ok': True}
|
|
|
+ MockClient.return_value = inst
|
|
|
+
|
|
|
+ cli.main(['put', '/foo/1', '-d', 'name=x', '-d', 'desc=hi'])
|
|
|
+
|
|
|
+ inst.put.assert_called_once_with(
|
|
|
+ '/foo/1', json_body=None, form_data={'name': 'x', 'desc': 'hi'})
|
|
|
+
|
|
|
+
|
|
|
+@patch('dw_base.ds.cli.DSClient')
|
|
|
+def test_put_no_body(MockClient, capsys):
|
|
|
+ inst = MagicMock()
|
|
|
+ inst.put.return_value = {}
|
|
|
+ MockClient.return_value = inst
|
|
|
+
|
|
|
+ cli.main(['put', '/foo/1'])
|
|
|
+
|
|
|
+ inst.put.assert_called_once_with('/foo/1', json_body=None, form_data=None)
|
|
|
+
|
|
|
+
|
|
|
+def test_put_j_and_d_mutex_exits():
|
|
|
+ with pytest.raises(SystemExit):
|
|
|
+ cli.main(['put', '/foo/1', '-j', '{}', '-d', 'k=v'])
|
|
|
+
|
|
|
+
|
|
|
+@patch('dw_base.ds.cli.DSClient')
|
|
|
+def test_put_o_writes_file(MockClient, tmp_path, capsys):
|
|
|
+ inst = MagicMock()
|
|
|
+ inst.put.return_value = {'code': 0}
|
|
|
+ MockClient.return_value = inst
|
|
|
+
|
|
|
+ out_file = tmp_path / 'out.json'
|
|
|
+ cli.main(['put', '/foo/1', '-d', 'k=v', '-o', str(out_file)])
|
|
|
+
|
|
|
+ assert json.loads(out_file.read_text(encoding='utf-8')) == {'code': 0}
|
|
|
+ captured = capsys.readouterr()
|
|
|
+ assert captured.out == ''
|
|
|
+ assert '已写到' in captured.err
|