The test_func.py unit test template for Python Knative functions in invalid
The generated test code invoke sthe function's main() entrypoint with an empty dictionary:
import unittest
func = __import__("func")
class TestFunc(unittest.TestCase):
def test_func_empty_request(self):
resp, code = func.main({})
self.assertEqual(resp, "{}")
self.assertEqual(code, 200)
if __name__ == "__main__":
unittest.main()
See code here
But, the main() function expects a a parliament Context that contains a Flask request
from parliament import Context
from flask import Request
...
def main(context: Context):
"""
Function template
The context parameter contains the Flask request object and any
CloudEvent received with the request.
"""
...
It should probably generate a context with some mock request. This is what I did for my function, which expects to be invoked with a parameter named descriptions:
import unittest
from parliament import Context
func = __import__("func")
class DummyRequest:
def __init__(self, descriptions):
self.descriptions = descriptions
@property
def args(self):
return dict(descriptions=self.descriptions)
class TestFunc(unittest.TestCase):
def test_func(self):
result, code = func.main(Context(DummyRequest('flame,confused')))
expected = """{"flame": "('fire', '🔥')", "confused": "('confused_face', '😕')"}"""
self.assertEqual(expected, result)
self.assertEqual(code, 200)
if __name__ == "__main__":
unittest.main()
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.