You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rune Tynan b49eb793f9 Fix signatures 1 week ago
discord/ext/test Fix signatures 1 week ago
tests added permission functionality with self test. 1 month ago
.gitignore Merge branch 'master' into verify-embed 1 week ago
LICENSE Add initial functional code, ported from Talos 1 year ago
README.md Update package and example to show asyncio usage 5 months ago
__init__.py added permission functionality with self test. 1 month ago
setup.cfg added permission functionality with self test. 1 month ago
setup.py Update package and example to show asyncio usage 5 months ago

README.md

dpytest

This is a package to allow testing of discord.py. It is only compatible with the rewrite version, and is still in early alpha. It relies on pytest-asyncio for asynchronous test running, as discord.py is coroutine driven.

Usage

dpytest can be used for projects using the default commands.Bot, or those defining their own subclass of bot. For someone using a custom class, code would look something like this:

import discord.ext.test as dpytest
import yourbot
import pytest


@pytest.mark.asyncio
async def test_bot():
    bot = yourbot.BotClass()
    
    # Load any extensions/cogs you want to in here
    
    dpytest.configure(bot)
    
    await dpytest.message("!help")
    dpytest.verify_message("[Expected help output]")

The dpytest framework is designed to be used best with pytest style fixtures, but is technically framework agnostic.
With pytest, the bot setup step would be moved into a fixture so each test could use that fixture. Configure will ensure that all state is reset after each call.