Custom Menu for bpy.context
You want to have a look at the ops.wm.context_... family of operators, which are 'generic' operators that can be used to define a value (or cycle through a set of values) of any compatible property accessible through context. This avoid the need to define a custom operator.

E.g. for an enum property like context.scene.render.engine:

import bpy

# Creates a menu for global 3D View
class customMenu(bpy.types.Menu):
    bl_label = "Sub"
    bl_idname = "view3D.sub"

    # Set the menu operators and draw functions
    def draw(self, context):
        layout = self.layout

        layout.operator("rigidbody.objects_add", text="A Add Active").type = 'ACTIVE'
        layout.operator("rigidbody.objects_add", text="B Add Passive").type = 'PASSIVE'
        op = layout.operator("wm.context_set_enum", text="Set Cycles Renderer")
        op.data_path = "scene.render.engine"
        op.value = 'CYCLES'


def register():
    bpy.utils.register_class(customMenu)
    bpy.ops.wm.call_menu(name=customMenu.bl_idname)

def unregister():
    bpy.utils.unregister_class(customMenu)

if __name__ == "__main__":
    register()


Note that you can also use layout.prop() and the like, just like in a regular panel - but beware, most of our widgets are not really designed nor tested in menus… Afaik in 'official' UI we only do that for some boolean properties (giving small toggle boxes in the menus). Seems to work rather well with enums, though, producing a sub-menu:

import bpy

# Creates a menu for global 3D View
class customMenu(bpy.types.Menu):
    bl_label = "Sub"
    bl_idname = "view3D.sub"

    # Set the menu operators and draw functions
    def draw(self, context):
        layout = self.layout

        layout.operator("rigidbody.objects_add", text="A Add Active").type = 'ACTIVE'
        layout.operator("rigidbody.objects_add", text="B Add Passive").type = 'PASSIVE'
        layout.prop(context.scene.render, "engine")

def register():
    bpy.utils.register_class(customMenu)
    bpy.ops.wm.call_menu(name=customMenu.bl_idname)

def unregister():
    bpy.utils.unregister_class(customMenu)

if __name__ == "__main__":
    register()