summaryrefslogtreecommitdiffstats
path: root/etc/unittest
diff options
context:
space:
mode:
Diffstat (limited to 'etc/unittest')
-rw-r--r--etc/unittest/__main__.py1
-rw-r--r--etc/unittest/asyncio.py4
-rw-r--r--etc/unittest/integration.py34
3 files changed, 37 insertions, 2 deletions
diff --git a/etc/unittest/__main__.py b/etc/unittest/__main__.py
index 06b2dff5..3a459dba 100644
--- a/etc/unittest/__main__.py
+++ b/etc/unittest/__main__.py
@@ -5,5 +5,6 @@ from .main import *
from .model import *
from .client import *
from .include import *
+from .integration import *
unittest.main() \ No newline at end of file
diff --git a/etc/unittest/asyncio.py b/etc/unittest/asyncio.py
index 57a1fb7d..8931b79a 100644
--- a/etc/unittest/asyncio.py
+++ b/etc/unittest/asyncio.py
@@ -19,8 +19,8 @@ class TestChatCompletion(unittest.TestCase):
return ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
def test_exception(self):
- if hasattr(asyncio, '_nest_patched'):
- self.skipTest('asyncio is already patched')
+ if has_nest_asyncio:
+ self.skipTest('has nest_asyncio')
self.assertRaises(g4f.errors.NestAsyncioError, asyncio.run, self.run_exception())
def test_create(self):
diff --git a/etc/unittest/integration.py b/etc/unittest/integration.py
new file mode 100644
index 00000000..36f09c0e
--- /dev/null
+++ b/etc/unittest/integration.py
@@ -0,0 +1,34 @@
+import unittest
+import json
+
+try:
+ import nest_asyncio
+ has_nest_asyncio = True
+except:
+ has_nest_asyncio = False
+
+from g4f.client import Client, ChatCompletion
+from g4f.Provider import Bing, OpenaiChat
+
+DEFAULT_MESSAGES = [{"role": "system", "content": 'Response in json, Example: {"success: True"}'},
+ {"role": "user", "content": "Say success true in json"}]
+
+class TestProviderIntegration(unittest.TestCase):
+ def setUp(self):
+ if not has_nest_asyncio:
+ self.skipTest("nest_asyncio is not installed")
+
+ def test_bing(self):
+ client = Client(provider=Bing)
+ response = client.chat.completions.create(DEFAULT_MESSAGES, "", response_format={"type": "json_object"})
+ self.assertIsInstance(response, ChatCompletion)
+ self.assertIn("success", json.loads(response.choices[0].message.content))
+
+ def test_openai(self):
+ client = Client(provider=OpenaiChat)
+ response = client.chat.completions.create(DEFAULT_MESSAGES, "", response_format={"type": "json_object"})
+ self.assertIsInstance(response, ChatCompletion)
+ self.assertIn("success", json.loads(response.choices[0].message.content))
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file